gpt4 book ai didi

java - SimpleDateFormat - 格式 - 九月 - JDK16

转载 作者:行者123 更新时间:2023-12-04 16:37:49 24 4
gpt4 key购买 nike

我刚刚将 Java 从 JDK-15 升级到 JDK-16,但在转换 Date 时发现问题使用 SimpleDateFormat .使用 yyyy-MMM-dd 格式化时仅 9 月给出 4 个字符而不是 3 个。
例如:2021-Sep-11显示为 2021-Sept-11

    Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 150);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MMM-dd");
System.out.println(cal.getTime());

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
对我来说看起来像一个错误。我在发行说明中看不到对此的任何更新。有人面临类似的问题吗?一直工作到 JDK-15。

最佳答案

切勿在没有 Locale 的情况下使用日期时间格式/解析类型因为文本是 Locale -敏感的。

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

public class Main {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 150);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MMM-dd", Locale.ENGLISH);
System.out.println(cal.getTime());

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
}
}
输出:
2021-Sep-11
请注意 java.util日期时间 API 及其格式 API, SimpleDateFormat过时且容易出错。建议完全停止使用,切换到 java.time , modern date-time API * .
使用现代日期时间 API:
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
public static void main(String[] args) {
// Change ZoneId as per your requirement e.g. ZoneId.of("Europe/London")
LocalDate date = LocalDate.now(ZoneId.systemDefault());
date = date.plusDays(150);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MMM-dd", Locale.ENGLISH);
String formatted = dtf.format(date);
System.out.println(formatted);
}
}
输出:
2021-Sep-11
查询 this answer了解更多 u对比 y .
了解有关现代日期时间 API 的更多信息Trail: Date Time .

* 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport它将大部分 java.time 功能向后移植到 Java 6 和 7。如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请查看 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project .

关于java - SimpleDateFormat - 格式 - 九月 - JDK16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67089932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com