【发布时间】:2019-12-04 14:19:20
【问题描述】:
我正在尝试从日期中获取毫秒数,但出现异常
java.text.ParseException:无法解析的日期:“Thu Jul 25 10:56:29 GMT+02:00 2019”
这就是我到目前为止所做的:
我使用“EEE MMM dd HH:mm:ss zzz yyyy”模式从 DatePicker 中获取日期,然后将其传递给获取毫秒数的方法:
long milliDate = parseIso8601(dateTimeCalendar.getTime().toString());
private static long parseIso8601(String value) {
try {
return new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US).parse(value).getTime();
} catch (ParseException ignored) {
return 0;
}
}
我得到了异常,它返回 0。我不知道出了什么问题。谢谢
【问题讨论】:
-
我尝试运行相同的代码 parseIso8601("Thu Jul 25 10:56:29 GMT+02:00 2019") 它正在我的机器上运行
-
我也无法复制。您的代码在我的桌面 Java 11 上运行良好。顺便考虑扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将 ThreeTenABP 添加到您的 Android 项目中,以便使用java.time,现代 Java 日期和时间 API。使用起来感觉好多了。 -
日期选择器中的日期可能已经是
Date对象。没有理由将其转换为字符串并将该字符串解析回Date。另外,您的方法名称parseIso8601具有误导性。您正在解析的格式与 ISO 8601 没有相似之处。
标签: java android date simpledateformat milliseconds