我有这种格式的日期字符串:
2011/02/14 00:00:00.000 -0800
我通过以下方式将其转换为java Date对象:
this.pubDate = Date.parse("yyyy/MM/dd 00:00:00.000 Z", obj.SourcePublishedDate);
以上结果产生结果2011/02/14 00:00:00.000 0000
我有两个关于结果的问题.解析0时,我使用格式“yyyy / MM / dd 00:00:00.000 Z”.有没有更好的方法来维持0?第二个问题是关于时区,由于某种原因我回到0000而不是-0800.怎么能解析正确的价值?
很感谢你的时间.
解决方法:
> java Date不能包含TimeZone信息.
>如果必须使用Java 7或更低版本.您可以使用Java日历
>如果您使用Java 8.您可以使用OffsetDateTime来存储日期/时间和时间.时区
// Parser
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS Z");
// Parse date/time with time zone
// OffsetDateTime odtWithTime = OffsetDateTime.parse("2011/02/14 00:00:00.000 -0800", formatter);
OffsetDateTime odtWithTime = OffsetDateTime.parse("2011/02/14 09:30:00.999 -0800", formatter);
// odtWithTime: 2011-02-14T09:30:00.999-08:00
// Remove time from odtWithTime
LocalDateTime ldtWithoutTime = odtWithTime.toLocalDate().atStartOfDay();
OffsetDateTime odtWihtoutTime = OffsetDateTime.of(ldtWithoutTime, odtWithTime.getOffset());
// odtWihtoutTime: 2011-02-14T00:00-08:00
// All time information are reset to Zero
摘要:您解析日期/时间&时区然后将所有时间信息重置为零.
标签:java,date,datetime
来源: https://codeday.me/bug/20190628/1312355.html