7

我需要做的是:

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。

有什么建议么?有没有更有效的方法来做到这一点?

4

5 回答 5

17

甚至更紧凑的解决方案;)

java.sql.Date timeNow = new Date(Calendar.getInstance().getTimeInMillis());
于 2013-03-22T14:07:10.993 回答
9

还有一种更简单的解决方案。使用此代码使用 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());
于 2011-12-22T08:22:45.970 回答
4

如果需要时间,则需要 java.sql.Timestamp 而不是 java.sql.Date,以及数据库中的时间戳列。

于 2009-05-06T12:42:06.837 回答
0

请注意,request.getLocale使用 Accept-Language 标题的值,可能并不总是为您提供正确的语言环境。

于 2009-05-06T13:10:32.043 回答
0

根据区域设置获取时区可能不是他们的实际时区

一个例子:在澳大利亚,语言环境是“en-AU”,但我们有几个时区最多相差 3 小时。

我猜在美国他们也有这个问题。

一种可能的解决方案是存储 UTC 时间。如果用户然后在他的偏好中调整他的时区,或者您使用其他传递时区的方法(通过 AJAX 说客户端/浏览器信息),那么您可以使用java.util.Calendar实例根据该方法调整 UTC 时间。

于 2009-05-06T14:27:15.400 回答