【发布时间】:2021-02-18 07:35:09
【问题描述】:
这部分代码将“2020 年 1 月 1 日”等输入转换为“01/01”。整个代码在 Android 到 Pie 的设备上完美运行,在 AVD 中也可以在 Q 和 R 的设备上完美运行。当我尝试在具有 Android Q 的物理 Android 设备上运行它时,它无法运行(我尝试了 2 种不同的设备,即 Mi Note 10 和 OnePlus 6T)。我对调试器进行了检查,一旦进入 IF 循环,我就发现了这个错误(我认为在指令中:@SuppressLint("SimpleDateFormat") SimpleDateFormat dt = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");"
W/System.err:java.text.ParseException:无法解析的日期:“Thu Nov 05 00:00:00 GMT+01:00 2020”
String[] mese = new String[] {"January","February","March","April","May","June","July","August","September","October","November","December"};
int a= 0 ;
while (a < 12){
if(dato.contains(mese[a])){
System.out.println("Test 3");
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(dato);
@SuppressLint("SimpleDateFormat") SimpleDateFormat dt = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy");
Date date2 = dt.parse(String.valueOf(date));
@SuppressLint("SimpleDateFormat") SimpleDateFormat dt1 = new SimpleDateFormat("dd/MM");
assert date2 != null;
dato = dato.replaceAll(dato,dt1.format(date2));
}
a++;
}
我的模式错了?我试过 EEE MMM dd HH:mm:ss zzz yyyy 和 EEE MMM dd HH:mm:ss zzzz yyyy 但结果相同
【问题讨论】:
-
顺便考虑扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友。看看您是否可以使用desugaring 或将ThreeTenABP 添加到您的Android 项目中,以便使用现代Java 日期和时间API 的java.time。使用起来感觉好多了。 -
我会尽力做到的。顺便说一句,仍然不知道我的问题:/
-
作为反馈。我使用新的 Java.time 完全转换了代码,这解决了我在物理设备上与 Android Q(和 R)的兼容性问题。看来他们不喜欢 SimpleDataFormat
-
很高兴听到!如果您能将其发布为您自己问题的答案,以供其他读者学习,我会很高兴。
标签: android android-studio date simpledateformat android-10.0