Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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中将字符串日期转换为日期并设置自己的格式_Java_Date_Datetime - Fatal编程技术网

如何在java中将字符串日期转换为日期并设置自己的格式

如何在java中将字符串日期转换为日期并设置自己的格式,java,date,datetime,Java,Date,Datetime,我有下列日期 "2022-02-01T20:32:00.000Z" 我想将这个日期格式化为以下模式 MM/dd/yyyy HH:mm:ss a 我试着从另一个问题中找出解决方案 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); DateTimeFormatter outputFormatter = DateTim

我有下列日期

"2022-02-01T20:32:00.000Z"
我想将这个日期格式化为以下模式

MM/dd/yyyy HH:mm:ss a
我试着从另一个问题中找出解决方案

DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
LocalDate date = LocalDate.parse("2022-02-01T20:32:00.000Z", inputFormatter);
String formattedDate = outputFormatter.format(date);
System.out.println(formattedDate); //02/01/2022
但是这种格式只给出日期,我想用日期来计时。所以我在这样的模式中添加了时间格式

1.
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss a");

2.
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss a").withLocale(Locale.getDefault()).withZone(ZoneId.systemDefault());;
但它给了我以下的例外

Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay

那么,如何从2022-02-01T20:32:00.000Z中实现
“MM/dd/yyyy HH:MM:ss a”
模式?字符串日期?

您可以使用以下两行代码:

OffsetDateTime offset = OffsetDateTime.parse("2022-02-01T20:32:00.000Z");
String output = offset.format(DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm:ss a"));
输出

02/01/2022 08:32:00 PM

您的字符串
“2022-02-01T20:32:00.000Z”
已格式化为
OffsetDateTime
的默认格式,因此您只需将其转换为
OffsetDateTime
,然后使用另一个格式化程序来获得所需的输出


由于您在模式的末尾使用了
a
,我建议您使用
hh
而不是
hh

,您可以使用两行代码:

OffsetDateTime offset = OffsetDateTime.parse("2022-02-01T20:32:00.000Z");
String output = offset.format(DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm:ss a"));
输出

02/01/2022 08:32:00 PM

您的字符串
“2022-02-01T20:32:00.000Z”
已格式化为
OffsetDateTime
的默认格式,因此您只需将其转换为
OffsetDateTime
,然后使用另一个格式化程序来获得所需的输出


由于您在模式末尾使用了
a
,我建议您使用
hh
而不是
hh

这是否回答了您的问题?给你的提示:将我们的错误信息粘贴到你的搜索引擎中,并立即找到答案。这是否回答了你的问题?给您的提示:将我们的错误消息粘贴到您的搜索引擎中,并立即找到答案。谢谢@YCF_L。是的,我将hh从hh更改为hh。您很高兴原始字符串使用UTC(由尾部的
Z
表示)。您可能希望转换到用户的时区进行打印。谢谢@YCF_L。是的,我将hh从hh更改为hh。您很高兴原始字符串使用UTC(由尾部的
Z
表示)。可能需要转换到用户的时区进行打印。