如何将 ZonedDateTime 格式化为 yyyy-MM-ddZ
How to format ZonedDateTime to yyyy-MM-ddZ
我需要将 ZonedDateTime 转换为 XML 日期数据类型,格式为 yyyy-MM-ddZ
。例如:2020-02-14Z
。我尝试使用 DateTimeFormatter.ofPattern("yyyy-MM-ddZ")
但输出是:2020-02-14+0000
。我应该使用哪种 DateTimeFormatter 模式来获得所需的结果?
您应该使用 DateTimeFormatter.ofPattern("yyyy-MM-dd'Z'")。这是我得到的:
LocalDate localDate = LocalDate.now();
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.of("EST5EDT"));
System.out.println("Not formatted:" + zonedDateTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'Z'");
System.out.println("Formatted:" + formatter.format(zonedDateTime));
不是 formatted:2020-02-14T00:00-05:00[EST5EDT]
格式:2020-02-14Z
DateTimeFormatter.ISO_OFFSET_DATE
使用内置 DateTimeFormatter.ISO_OFFSET_DATE
.
ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("America/Fortaleza"));
String dateForXml = dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE);
System.out.println(dateForXml);
当我运行刚才这个片段时,输出是:
2020-02-14-03:00
如果你想要一个尾随 Z
的 UTC 字符串,请使用 ZoneOffset.UTC
:
ZonedDateTime dateTime = ZonedDateTime.now(ZoneOffset.UTC);
2020-02-14Z
如果你有一个 ZonedDateTime
不是 UTC,转换:
ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("America/Fortaleza"));
OffsetDateTime odt = dateTime.toOffsetDateTime()
.withOffsetSameInstant(ZoneOffset.UTC);
String dateForXml = odt.format(DateTimeFormatter.ISO_OFFSET_DATE);
2020-02-14Z
我需要将 ZonedDateTime 转换为 XML 日期数据类型,格式为 yyyy-MM-ddZ
。例如:2020-02-14Z
。我尝试使用 DateTimeFormatter.ofPattern("yyyy-MM-ddZ")
但输出是:2020-02-14+0000
。我应该使用哪种 DateTimeFormatter 模式来获得所需的结果?
您应该使用 DateTimeFormatter.ofPattern("yyyy-MM-dd'Z'")。这是我得到的:
LocalDate localDate = LocalDate.now();
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.of("EST5EDT"));
System.out.println("Not formatted:" + zonedDateTime);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'Z'");
System.out.println("Formatted:" + formatter.format(zonedDateTime));
不是 formatted:2020-02-14T00:00-05:00[EST5EDT]
格式:2020-02-14Z
DateTimeFormatter.ISO_OFFSET_DATE
使用内置 DateTimeFormatter.ISO_OFFSET_DATE
.
ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("America/Fortaleza"));
String dateForXml = dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE);
System.out.println(dateForXml);
当我运行刚才这个片段时,输出是:
2020-02-14-03:00
如果你想要一个尾随 Z
的 UTC 字符串,请使用 ZoneOffset.UTC
:
ZonedDateTime dateTime = ZonedDateTime.now(ZoneOffset.UTC);
2020-02-14Z
如果你有一个 ZonedDateTime
不是 UTC,转换:
ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("America/Fortaleza"));
OffsetDateTime odt = dateTime.toOffsetDateTime()
.withOffsetSameInstant(ZoneOffset.UTC);
String dateForXml = odt.format(DateTimeFormatter.ISO_OFFSET_DATE);
2020-02-14Z