如何将 Fucking DateTime(UTC) 转换为 java.sql.Timestamp(UTC)?
How do I convert a Joda DateTime(UTC) to a java.sql.Timestamp(UTC)?
当根据用户时区将字符串转换为 UTC 中的 Joda DateTime,然后将其转换为 java.sql.Timestamp
时,它会变回东部时间。
DateTimeZone usersTimezone = DateTimeZone.forID("America/New_York");
String DATE_FORMAT = "MM/dd/yyyy hh:mm aa";
DateTimeFormatter DATETIME_FORMATTER = DateTimeFormat.forPattern(DATE_FORMAT);
DateTime date = DATETIME_FORMATTER.withZone(usersTimezone).parseDateTime("03/06/2016 5:30 AM");
DateTime utcDateTime = date.toDateTime(DateTimeZone.UTC);
java.sql.Timestamp utcTimestamp = new java.sql.Timestamp(utcDateTime.getMillis());
System.out.println(" UTC DATETIME: " + utcDateTime);
System.out.println("UTC TIMESTAMP: " + utcTimestamp);
打印以下内容:
UTC DATETIME: 2016-03-06T10:30:00.000Z
UTC TIMESTAMP: 2016-03-06 05:30:00.0
为什么时间戳转换回东部时区?我想将它作为 UTC 时间戳输入到数据库中吗?
注意:将我服务器的时区更改为 UTC 没有任何区别。
java.sql.Timestamp.toString()
将打印当前时区的时间戳,而不是 UTC。
这个值是正确的,你只是打印错了。
Timestamp
的内部值与所有其他值一样 java.util.Date
类。
当根据用户时区将字符串转换为 UTC 中的 Joda DateTime,然后将其转换为 java.sql.Timestamp
时,它会变回东部时间。
DateTimeZone usersTimezone = DateTimeZone.forID("America/New_York");
String DATE_FORMAT = "MM/dd/yyyy hh:mm aa";
DateTimeFormatter DATETIME_FORMATTER = DateTimeFormat.forPattern(DATE_FORMAT);
DateTime date = DATETIME_FORMATTER.withZone(usersTimezone).parseDateTime("03/06/2016 5:30 AM");
DateTime utcDateTime = date.toDateTime(DateTimeZone.UTC);
java.sql.Timestamp utcTimestamp = new java.sql.Timestamp(utcDateTime.getMillis());
System.out.println(" UTC DATETIME: " + utcDateTime);
System.out.println("UTC TIMESTAMP: " + utcTimestamp);
打印以下内容:
UTC DATETIME: 2016-03-06T10:30:00.000Z
UTC TIMESTAMP: 2016-03-06 05:30:00.0
为什么时间戳转换回东部时区?我想将它作为 UTC 时间戳输入到数据库中吗?
注意:将我服务器的时区更改为 UTC 没有任何区别。
java.sql.Timestamp.toString()
将打印当前时区的时间戳,而不是 UTC。
这个值是正确的,你只是打印错了。
Timestamp
的内部值与所有其他值一样 java.util.Date
类。