繁体   English   中英

将Joda-Time转换为UTC区域中的时间戳

[英]Convert Joda-Time to Timestamp in UTC zone

以下代码段使用Joda-Time API将日期转换为UTC区域。

DateTimeFormatter dateTimeFormatter=DateTimeFormat.forPattern("dd-MMM-yyyy hh:mm:ss aa");
DateTime dateTime = dateTimeFormatter.parseDateTime("15-Oct-2013 11:34:26 AM").withZone(DateTimeZone.UTC);        
System.out.println(dateTime);

它完全按照预期显示以下日期。

2013-10-15T06:04:26.000Z

但是当像这样将日期转换为java.sql.Timestamp

System.out.println(new Timestamp(dateTime.getMillis()));

它显示以下日期。

2013-10-15 11:34:26.0

这意味着与给定的日期/时间相同。 时区UTC似乎被忽略了。


如何获取Timestamp以将日期正确转换为UTC?

Java Timestamp.toString()以UTC输出(尽管在Javadoc中没有说太多,但是源没有使用TimeZone信息)。 由于您的原始日期/时间采用UTC,因此您将看到完全相同的输出。

尽管println()方法在控制台上显示Timestamp#toString()隐式使用了Timestamp#toString()方法,但该控制台又使用当前JVM时区显示日期时间(JVM时区默认为系统时区,操作时系统使用),该问题的初衷是将new Timestamp(dateTime.getMillis())保留到具有UTC区域的 MySQL数据库中,由于以下相关答案中提到的原因,这不会发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM