使用Joda-Time在Java中的UTC区域中的日期

Tin*_*iny 1 java datetime date utc jodatime

我需要将Joda-Time日期/时间转换为java.util.Date.我做的如下.

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

System.out.println(dateTime);
Run Code Online (Sandbox Code Playgroud)

这将按预期显示由UTC区域表示的日期/时间.在这种情况下,它是2013-10-02T06:04:26.000Z

dateTime转换java.util.Date为如下时,

System.out.println(dateTime.toDate());
Run Code Online (Sandbox Code Playgroud)

它表明,Wed Oct 02 11:34:26 IST 2013.它应该是UTC格式.

从Joda-Time转换后有没有办法表示Datein UTC

我希望将日期存储到由UTC区域表示的数据库中. org.joda.time.DateTime需要在将其插入数据库之前转换为java.util.Date(或java.sql.Timestamp).如何克服这种情况?

Ale*_*ien 5

java.util.Date每个定义的对象始终是UTC!
(时间戳是自1.1.1970 UTC以来的毫秒数)

但是你必须在时间格式化之前将timeZone设置为utc:

TimeZone utc = TimeZone.getTimeZone("UTC")

SimpleDateFormatter df = new SimpleDateFormatter (PATTERN);
df.setTimeZone(utc);

System.out.println(df.format(date));
Run Code Online (Sandbox Code Playgroud)

在您的代码中,您使用了java.util.Date.toString()使用系统默认TimeZone的方法.