繁体   English   中英

从Joda DateTime对象中删除时区

[英]Removing time zone from Joda DateTime object

DateTimeFormatter df = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
DateTime temp = df.withOffserParsed().parseDateTime("1970-01-02T00:00:00");
Date date = temp.toDate();
DateTime dateTime = new DateTime(date);
long epoch_start_date = dateTime.getMillis();
System.out.println(dateTime);

这打印出1970-01-02T00:00:00.000 + 12:00

有没有办法从dateTime对象中删除时区(+12:00位)? 这导致结果时间是1970年1月2日中午12:00,而不是期望的1970年1月2日上午12:00。

这是当地时间偏离UTC / GMT。

有没有办法从dateTime对象中删除时区(+12:00位)?

是的,有办法,但这会导致错误的时间。 假设你住在斐济或基里巴斯,给出的时间是正确的时间。 它以(+12:00)表示,表示您所在的时区。

结果是结果时间是1970年1月1日中午12点,而不是期望的1970年1月1日上午12:00

事实并非如此,由于我给出的原因。 所需时间是1970年1月2日,而不是1月1日.GMT时间是1月1日中午12点,当地时间是1月2日凌晨12:00。

给了你适当的警告,这是你如何在时区周围工作:

DateTimeFormatter df = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss");
DateTime temp = df.parseDateTime("1970-01-02T00:00:00");
Date date = temp.toDate();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int offset = calendar.getTimeZone().getOffset(calendar.getTimeInMillis());
calendar.add(Calendar.MILLISECOND, offset);
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
DateTime dateTime = new DateTime(calendar);
System.out.println(dateTime);

请记住,通过这样做,您可能会丢弃从Joda表达UTC时间的任何好处。

暂无
暂无

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

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