如何在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
表示)。可能需要转换到用户的时区进行打印。