Java 如何将GMT日期转换为本地日期
我有一个非标准GMT格式的日期字符串,比如“2016-08-31T02:04:58.893GMT”。 现在我需要将其转换为本地时间格式,如“2016-08-31 10:04:58”。顺便说一下,我在中国,当地时间和格林威治标准时间之间有8个小时。Java 如何将GMT日期转换为本地日期,java,datetime,gmt,Java,Datetime,Gmt,我有一个非标准GMT格式的日期字符串,比如“2016-08-31T02:04:58.893GMT”。 现在我需要将其转换为本地时间格式,如“2016-08-31 10:04:58”。顺便说一下,我在中国,当地时间和格林威治标准时间之间有8个小时。 哦,我用Java。谢谢大家。您最好将非标准GMT格式转换为标准时间格式,然后使用一些适当的内置函数来增加或减少差异。您可以使用其他功能将标准时间格式转换为指定格式 这将是非常重要的,因为你不必考虑复杂的情况,例如“2016-1231-23”+8Hr.<
哦,我用Java。谢谢大家。您最好将非标准GMT格式转换为标准时间格式,然后使用一些适当的内置函数来增加或减少差异。您可以使用其他功能将标准时间格式转换为指定格式
这将是非常重要的,因为你不必考虑复杂的情况,例如“2016-1231-23”+8Hr.< /P> < P>你用<代码> DateTimeFormatter解析字符串。OfType(“YYYY MM DD’tH':mm:SS。SSSz))< /COD> < /P> 示例代码,显示中间结果:
String input = "2016-08-31T02:04:58.893GMT";
DateTimeFormatter fmt1 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSz");
ZonedDateTime zdtGMT = ZonedDateTime.parse(input, fmt1);
System.out.println(zdtGMT); // prints 2016-08-31T02:04:58.893Z[GMT]
ZonedDateTime zdtChina = zdtGMT.withZoneSameInstant(ZoneId.of("Asia/Shanghai"));
System.out.println(zdtChina); // prints 2016-08-31T10:04:58.893+08:00[Asia/Shanghai]
LocalDateTime ldt = zdtChina.toLocalDateTime();
System.out.println(ldt); // prints 2016-08-31T10:04:58.893
DateTimeFormatter fmt2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(ldt.format(fmt2)); // prints 2016-08-31 10:04:58