java 日期000z_java日期转换为00:00:00.000

我有这种格式的日期字符串:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值