SimpleDataFormat中月份的java奇怪问题
我尝试设置日期和时间的格式:
Locale locale = context.getResources().getConfiguration().locale;
dateFormatDayMonth = new SimpleDateFormat("EEE, MMM d", locale);
textView.setText(dateFormatDayMonth.format(calendar.getTime()));
然而,结果是Sat, M10 2
。我原以为是Sat, Oct 2
。它以前是工作的,但突然停止了工作。
我错过了什么吗
# 1 楼答案
爪哇。时间
java.util
日期时间API及其格式化APISimpleDateFormat
已经过时且容易出错。建议完全停止使用它们,并切换到modern Date-Time API*使用
java.time
现代日期时间API的解决方案:输出:
ONLINE DEMO
如果你有一个
java.util.Calendar
对象可以使用^{} 将现有的} 又可以转换为
java.util.Calendar
对象转换为java.time.Instant
,而^{java.time
API的其他日期时间类型演示:
输出:
ONLINE DEMO
从Trail: Date Time了解有关现代日期时间API的更多信息
以防万一,你需要使用传统的API来做这件事
不管出于什么原因,如果你想坚持使用传统的API,你可以像我在上面做的那样映射
Locale
,也就是说*如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查Java 8+ APIs available through desugaring。请注意,Android 8.0 Oreo已经提供了support for ^{} 。
# 2 楼答案
像这样初始化日期格式