[英]Java/Servlet: get current sql.Date
我需要做的是:
1)从请求中获取用户的语言环境。
2)根据用户的语言环境,使用当前日期和时间创建新的sql.Date对象
3)将其写入MySQL db,列类型:TIMESTAMP
我得到的是:
java.util.Locale locale = request.getLocale();
java.text.DateFormat dateFormat =
java.text.DateFormat.getDateTimeInstance(
java.text.DateFormat.LONG, java.text.DateFormat.LONG, locale );
java.util.Date date = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date( date.getTime() );
日期还可以,但是时间有问题-总是12:00:00 AM。
有什么建议么? 有没有更有效的方法可以做到这一点?
甚至更紧凑的解决方案;)
java.sql.Date timeNow = new Date(Calendar.getInstance().getTimeInMillis());
有一个更简单的解决方案。 使用此代码通过java.util.Date获取当前日期
java.util.Calendar cal = java.util.Calendar.getInstance();
java.util.Date utilDate = cal.getTime();
java.sql.Date sqlDate = new Date(utilDate.getTime());
如果需要时间,则需要java.sql.Timestamp而不是java.sql.Date,并且需要数据库中的timestamp列。
请注意, request.getLocale使用的是Accept-Language标题的值,可能并不总是为您提供正确的语言环境。
根据语言环境获取时区可能不是其实际时区 。
例如:在澳大利亚,语言环境为“ en-AU”,但是我们有一些时区,相差最多3个小时。
我猜在美国他们也有这个问题。
一种可能的解决方案是存储UTC时间 。 如果用户随后调整了自己的时区(例如,他的偏好),或者您使用了其他传递时区的方法(客户端/浏览器信息通过AJAX进行了说明),则可以使用java.util.Calendar
基于该时间调整UTC时间java.util.Calendar
实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.