从Joda DateTime对象中删除时区

ARa*_*pal 4 java timezone datetime jodatime

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);
Run Code Online (Sandbox Code Playgroud)

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

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

gkn*_*ker 6

这是当地时间偏离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);
Run Code Online (Sandbox Code Playgroud)

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