【发布时间】:2018-09-15 07:55:31
【问题描述】:
当我们从 JVM 调用
parseJavaAndroid("2018-04-27T22:31:07.962-05:00")时,它会给出ParseException,而从 Emulator/Android Real 设备调用它可以正常工作。-
当我们在 Android 中将
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ", Locale.ENGLISH)更改为SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.ENGLISH)时,它会抛出:带有消息“未知模式字符'X'方法”的IllegalArgumentException。
它在 JVM 中运行良好,并在 Emulator/Android Real 设备中提供
ParseException。
public static Date parseJavaAndroid(String fromDate){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ", Locale.ENGLISH);
Date date=null;
try {
date = format.parse(fromDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
应该怎么做才能在 JVM 和 android 实时设备中运行(minSdkVersion:19)。我想要“2018-04-27T22:31:07.962-05:00”的模式,它适用于 Android 和 Java。
注意:个人模式有效,所以请不要为个人建议。
【问题讨论】:
-
顺便考虑扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。 -
你肯定是太努力了。接受Answer by picit 中的建议,改为使用 java.time 类。这样做更容易:
OffsetDateTime.parse("2018-04-27T22:31:07.962-05:00")并完成它。遗留的日期时间类真的是一团糟。
标签: java android date datetime jvm