SimpleDateFormat用于解析Oracle日期的内容是什么?
我正在使用这个SimpleDateFormat .
SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy / mm / dd hh:mm:ss.sss”);它给出了这个例外 . java.text.ParseException:Unparseable date:“2011-08-19 06:11:03.0”
请告诉我要使用的SimpleDateFormat . 谢谢 .
2 回答
您应该使用此模式
"yyyy-MM-dd HH:mm:ss.S"
而不是"yyyy/mm/dd hh:mm:ss.sss"
."Hour in am/pm (1-12)"的小
h
和"Hour in day (0-23)"的H
看到这里:SimpleDateFormat
tl;博士
详情
您的输入字符串与格式设置模式不匹配 . 您的模式具有斜杠字符,其中数据具有连字符 .
java.time
此外,您正在使用现在遗留下来的可怕的旧日期时间类,取而代之的是java.time类 .
您的输入字符串几乎符合日期时间格式的ISO 8601标准 . 用
T
替换中间的SPACE .您的输入缺少任何时区指示符或与UTC的偏移量 . 所以我们解析为LocalDateTime,对于缺少任何区域/偏移概念的对象 .
要以标准格式生成字符串,请调用
toString
.如果此输入用于特定时区,请进行分配 .
关于java.time
java.time框架内置于Java 8及更高版本中 . 这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date,Calendar和SimpleDateFormat .
现在位于maintenance mode的Joda-Time项目建议迁移到java.time类 .
要了解更多信息,请参阅Oracle Tutorial . 并搜索Stack Overflow以获取许多示例和解释 . 规格是JSR 310 .
如果JDBC driver符合JDBC 4.2或更高版本,则可以直接与数据库交换java.time对象 . 不需要字符串或java.sql . *类 .
从哪里获取java.time类?
Java SE 8,Java SE 9,以及之后
内置 .
具有捆绑实现的标准Java API的一部分 .
Java 9增加了一些小功能和修复 .
Java SE 6和Java SE 7
大部分java.time功能在ThreeTen-Backport中反向移植到Java 6和7 .
Android
更新版本的Android捆绑java.time类的实现 .
对于早期的Android,ThreeTenABP项目采用ThreeTen-Backport(如上所述) . 见How to use ThreeTenABP… .
ThreeTen-Extra项目使用其他类扩展java.time . 该项目是未来可能添加到java.time的试验场 . 您可以在这里找到一些有用的类,例如Interval,YearWeek,YearQuarter和more .