【发布时间】:2021-02-23 17:50:30
【问题描述】:
我正在尝试将MM/dd/YY 格式化为uuuu-MM-dd'T00:00:00Z。
我有以下代码。
String dateTime = "12/10/20";
DateFormat df = new SimpleDateFormat("MM/dd/yy");
Date date;
date = df.parse(dateTime); // Thu Dec 10 00:00:00 EST 2020
String dateStr = df.format(date); // 12/10/20
MonthDay monthDay = MonthDay.parse(dateStr, DateTimeFormatter.ofPattern("MM/dd/yy")); // --12-10
ZonedDateTime newDate = ZonedDateTime.now().with(monthDay); // 2021-12-10T12:34:21.214-05:00[US/Eastern]
String formattedDate = newDate.format(DateTimeFormatter.ofPattern("uuuu-MM-dd'T00:00:00Z'"));
问题是前几年的日期(如本例所示)被作为当前年份返回。
我怎样才能使用相同的格式但考虑到年份?
【问题讨论】:
-
在使用
MonthDay和ZonedDateTimefomr java.time(现代Java 日期和时间API)时,不要同时混用DateFormat、simpleDateFormat和Date,因为它们是出了名的麻烦且过时了,并且您正在进行不必要的转换。 java.time 为您提供所需的所有功能。
标签: java date datetime date-format zoneddatetime