【发布时间】:2020-03-08 20:13:58
【问题描述】:
我有一个格式为Tue, 30 Apr 2019 16:00:00 +0800 的日期时间,即RFC 2822 formatted date
我需要将其转换为 DateTime 中的给定时区,即 +0800
所以如果我总结一下,
DateGiven = Tue, 30 Apr 2019 16:00:00 +0800
DateWanted = 01-05-2019 00:00:00
如何在 Java 中实现这一点? 我已经尝试了下面的代码,但它比当前时间少 08 小时,即
30-04-2019 08:00:00
我试过的代码
String pattern = "EEE, dd MMM yyyy HH:mm:ss Z";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date startDate = format.parse(programmeDetails.get("startdate").toString());
//Local time zone
SimpleDateFormat dateFormatLocal = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
//Time in GMT
Date dttt= dateFormatLocal.parse( dateFormatGmt.format(startDate) );
【问题讨论】:
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的OffsetDateTime和DateTimeFormatter。
标签: java datetime timezone datetime-format timezone-offset