Java分区时间未返回正确的年份

Java分区时间未返回正确的年份,java,android,Java,Android,由于新年的关系,我在我的项目中发现了一个bug。 我使用以下代码在订单历史记录中显示日期和时间: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm a MM/dd/YY", Locale.US).withZone(ZoneId.systemDefault()); String formattedOrderDate = formatter.withZone(ZoneId.of(order.timeZone)).forma

由于新年的关系,我在我的项目中发现了一个bug。 我使用以下代码在订单历史记录中显示日期和时间:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm a MM/dd/YY", Locale.US).withZone(ZoneId.systemDefault());
String formattedOrderDate = formatter.withZone(ZoneId.of(order.timeZone)).format(order.order.pickupAt);
textView.setText(formattedOrderDate );
以下是从服务器接收到的值:

order.order.pickupAt = {ZonedDateTime@8390} "2020-01-02T17:50Z"
order.timeZone = "America/Denver"
但产出并没有显示出12月底的完美年份:

如你所见,2019年是2020年

但它只显示12月底。12月中旬的另一个订单显示的是正确的日期年份

我无法检测出这里出了什么问题。我怀疑这可能是由于美国/丹佛的时区。但我已将时区更改为本地时区,仍然显示为2020而不是2019。

YY表示基于周的日历年,YY表示日历年。12月的最后几天实际上是2020年的第一周,所以这几天显示的是2020年

将您的代码更改为使用yy,然后它将显示正确的年份-

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm a MM/dd/yy", Locale.US).withZone(ZoneId.systemDefault());
用yy代替yy

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("h:mm a MM/dd/yy", Locale.US).withZone(ZoneId.systemDefault());
String formattedOrderDate = formatter.withZone(ZoneId.of(order.timeZone)).format(order.order.pickupAt);
textView.setText(formattedOrderDate );