String strDateTime = "2015-08-14 16:25:12"; //From database that was stored in UTC
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").withZone(DateTimeZone.UTC);
DateTime dateTime = DateTime.parse(strDateTime, dateTimeFormatter);
LocalDateTime local = dateTime.toLocalDateTime();
// local = 2015-08-14T16:25:12.000
I want to get the date in my local time zone???
where local = 2015-08-14T11:25:12.000 // 11 VS 16
知道我在这里做错了吗?
答案 0 :(得分:3)
在Joda中,LocalDateTime
不是 DateTime,您现在,它没有任何时区信息的日期时间 。来自the docs:
LocalDateTime是一个不可修改的日期时间类,表示没有时区的日期时间。
通过询问dateTime.toLocalDateTime(),您只需要提供与原始UTC版本相同的DateTime,但剥离了UTC信息。相反,它听起来像你想要在时区之间转换; LocalDateTime可能对您或您的解决方案没有用。
使用DateTime.toDateTime(DateTimeZone)在时区之间进行转换;您可以使用DateTimeZone.getDefault获取系统的默认时区,这可能是您正在寻找的时区。
答案 1 :(得分:2)
使用ISO日期时间格式尝试此操作:
String startDate = "2013-07-12T18:31:01.000Z";
DateTime dt = ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC).parseDateTime(startDate);
您可以在此处获得更多信息:http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%28%29