Ree*_*ema 3 java date datetime-format java-time java-16
我刚刚将 Java 从 JDK-15 升级到 JDK-16,在Date使用SimpleDateFormat. 仅使用 9 月份进行格式化时yyyy-MMM-dd就给出了 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);
Run Code Online (Sandbox Code Playgroud)
对我来说看起来像一个错误。我在发行说明中看不到对此的任何更新。有人面临类似的问题吗?一直工作到 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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2021-Sep-11
Run Code Online (Sandbox Code Playgroud)
请注意,java.util日期时间 API 及其格式化 APISimpleDateFormat已过时且容易出错。建议完全停止切换,并使用它们java.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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2021-Sep-11
Run Code Online (Sandbox Code Playgroud)
检查此答案以了解有关uvs 的更多信息y。
从Trail: Date Time 中了解有关现代日期时间 API 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和您的 Android API 工作级别仍然不符合 Java-8,请检查通过 desugaring和How to use ThreeTenABP in Android Project可用的 Java 8+ APIs。
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |