Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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.time从偏移量到时区名称_Java_Datetime Format_Java Time_Timezone Offset_Zoneddatetime - Fatal编程技术网

Java.time从偏移量到时区名称

Java.time从偏移量到时区名称,java,datetime-format,java-time,timezone-offset,zoneddatetime,Java,Datetime Format,Java Time,Timezone Offset,Zoneddatetime,尝试将各种时间格式转换为统一格式 一种格式是 "uuuu-MM-dd'T'HH:mm:ss-5000" 需要转换为时区格式: "uuuu-MM-dd'T'HH:mm:ss EST" 使用以下代码,但它仅给出时区“-05:00”,而不是预期的“EST” 上述结果是: 2018-02-05T17:25:18 -05:00 如何获得预期的: 2018-02-05T17:25:18 EST -05:00实际上不是时区。这只是一个偏移量:比UTC晚5个小时,你无法真正将其映射到一个时区 截至您使用

尝试将各种时间格式转换为统一格式

一种格式是

"uuuu-MM-dd'T'HH:mm:ss-5000"
需要转换为时区格式:

"uuuu-MM-dd'T'HH:mm:ss EST"
使用以下代码,但它仅给出时区“-05:00”,而不是预期的“EST”

上述结果是:

2018-02-05T17:25:18 -05:00
如何获得预期的:

2018-02-05T17:25:18 EST

-05:00
实际上不是时区。这只是一个偏移量:比UTC晚5个小时,你无法真正将其映射到一个时区

截至您使用的日期(2018年2月2日),共有47个时区使用
-05:00
*,包括美国以外的地区-其中许多地区不将其时区称为“EST”,例如利马使用“PET”(秘鲁时间)或波哥大使用“COT”(哥伦比亚时间)。无论每个地方使用的名称是什么,它们都在您使用的日期和时间使用
-05:00

无论如何,当您解析偏移量(如
-05:00
)时,由于上面列出的原因,API无法知道您所指的时区(不止一个,API本身无法确定)。您必须任意选择一个时区,然后将解析的
ZoneDateTime
转换为该时区:

。。。。
ZonedDateTime=ZonedDateTime.parse(origStr,DateTimeFormatter.of模式(origFormat));
//转换为任意时区
时间=时间,包括美国/纽约特区;
我选择“美国/纽约”是因为它在2018年2月使用了“EST”。这样,您的
targetStr
将:

2018-02-05T17:25:18美国东部时间

将时区名称更改为所需的名称。请注意,对于6月份纽约夏时制生效的日期,它将返回“EDT”


*:我将JDK 8与2018e TZ数据文件一起使用,因此此数字在您的环境中可能有所不同

2018-02-05T17:25:18 EST