Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将GMT日期转换为本地日期_Java_Datetime_Gmt - Fatal编程技术网

Java 如何将GMT日期转换为本地日期

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.<

我有一个非标准GMT格式的日期字符串,比如“2016-08-31T02:04:58.893GMT”。 现在我需要将其转换为本地时间格式,如“2016-08-31 10:04:58”。顺便说一下,我在中国,当地时间和格林威治标准时间之间有8个小时。
哦,我用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