Java-无法解析的日期
|
我正在尝试解析一个日期,但奇怪的是我遇到了一个例外。
这是代码:
import java.util.Date;
String strDate = \"Wed, 09 Feb 2011 12:34:27\";
Date date;
SimpleDateFormat FORMATTER = new SimpleDateFormat(\"EEE, dd MMM yyyy HH:mm:ss\");
try {
date = FORMATTER.parse(strDate.trim());
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
例外是:
java.text.ParseException:无法解析
日期:“ 2011年2月9日星期三12:34:27 \”
java.text.DateFormat.parse(DateFormat.java:337)
在DateTest.main(DateTest.java:17)
我已经阅读了文档,我认为我的模式是正确的。所以我不明白...
任何想法?
谢谢!
没有找到相关结果
已邀请:
2 个回复
导力疵谜
代替。
薄响
细节 Question和其他Answer都使用过时且麻烦的旧日期时间类,这些类现在已被遗留,由java.time类取代。 使用java.time 输入字符串缺少任何时区或UTC偏移量的指示。因此,我们将其解析为
。 指定一个ѭ4来确定(a)日名,月名等的翻译所用的人类语言,以及(b)决定缩写,大写,标点,分隔符等问题的文化规范。
ldt.toString():2011-02-09T12:34:27 时区 问题和其他答案都忽略了时区这一关键问题。 输入的字符串缺少时区或偏移量。我们将其解析为
,这不是时间轴上的时刻,只是关于可能时刻的模糊概念。就像说“圣诞节从2017年12月25日午夜开始”一样,直到将其置于特定时区的上下文中时,它才有意义。圣诞节在新西兰的奥克兰比法国的巴黎要早得多,圣诞节在魁北克蒙特利尔也要晚得多。 如果您知道预期的时区,请分配一个
以产生一个
。
转换中 最好避免麻烦的旧传统日期时间类。但是,如果必须与尚未更新为java.time类型的旧代码进行交互,则可以在旧类和java.time之间进行转换。期待将新方法添加到旧类中。 在UTC时间轴上,ѭ10是时刻。因此,我们需要从
中提取
。
类表示UTC时间轴上的时刻,分辨率为纳秒(最多十进制的九(9)位数字)。
走另一个方向。
关于java.time java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧式传统日期时间类,例如
,
和
。 现在处于维护模式的Joda-Time项目建议迁移到java.time类。 要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。 您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC驱动程序。不需要字符串,不需要
类。 在哪里获取java.time类? Java SE 8,Java SE 9,Java SE 10和更高版本 内置的 标准Java API的一部分,具有捆绑的实现。 Java 9添加了一些次要功能和修复。 Java SE 6和Java SE 7 很多java.time功能都在ThreeTen-Backport中反向移植到Java 6和7。 安卓系统 更高版本的Android捆绑了java.time类的实现。 对于早期的Android(<26),ThreeTenABP项目改编了ThreeTen-Backport(如上所述)。请参阅如何使用ThreeTenABP…。 ThreeTen-Extra项目使用其他类扩展了java.time。该项目是将来可能向java.time添加内容的试验场。您可能会在这里找到一些有用的类,例如
,
,
等。