java datetime GMT_无法使用Java 8将给定的本地日期转换为GMT日期

我很难使用Java 8类LocalDateTime和ZonedDateTime将给定的本地日期(在IST中)转换为GMT.

请考虑以下代码段.

LocalDateTime ldt = LocalDateTime.parse("22-1-2015 10:15:55 AM", DateTimeFormatter.ofPattern("dd-M-yyyy hh:mm:ss a"));

ZonedDateTime gmtZonedTime = ldt.atZone(ZoneId.of("GMT+00"));

System.out.println("Date (Local) : " + ldt);

System.out.println("Date (GMT) : " + gmtZonedTime);

其中产生以下输出:

Date (Local) : 2015-01-22T10:15:55

Date (GMT) : 2015-01-22T10:15:55

我认为这只是转换格式,而不是时间.

我期望的输出是:(因为GMT比IST落后5.30小时)

Date (Local) : 2018-02-26T01:30

Date (GMT) : 2018-02-26T08:00Z[GMT]

请指导我到那儿!

解决方法:

输出是你应该期待的. LocalDateTime根本没有时区,它只是某个地方的日期和时间(未指定).你认为它在IST中的假设是错误的,事实并非如此. atZone方法添加时区,在本例中为UTC / GMT,但不会更改日期或时间.

您可能希望首先将LocalDateTime转换为IST的ZonedDateTime,然后将时区更改为UTC.这应该改变时间.

标签:gmt,java,java-8,datetime

来源: https://codeday.me/bug/20190828/1748329.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值