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。
答案 0 :(得分:5)
这是当地时间偏离UTC / GMT。
有没有办法从dateTime对象中删除时区(+12:00位)?
是的,有办法,但这会导致错误的时间。假设你住在斐济或基里巴斯,给出的时间是正确的时间。它以(+12:00)表示,表示您所在的时区。
结果时间为1970年1月1日中午12:00,而不是所需的 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时间中获得的任何好处。