我正在解析XML文件。在此文件中,有一个标签包含日期字符串“2008-11-10T05:51:33Z”
,我想将此字符串转换为java.util.Date对象
。
这该怎么做?
我正在解析XML文件。在此文件中,有一个标签包含日期字符串“2008-11-10T05:51:33Z”
,我想将此字符串转换为java.util.Date对象
。
这该怎么做?
使用java.text.DateFormat——或者更可能地,SimpleDateFormat。
或者选择Joda Time,它拥有更好的API。请小心使用Java内置API-DateFormat不是线程安全的(而Joda Time几乎在所有地方都使用不可变类型,因此是线程安全的)。
一个(没有经过测试-应该除了可能的时区部分外没问题)Joda Time API的示例:
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd T HH:mm:ssZ");
DateTime dt = fmt.parse("2008-11-10T05:51:33Z");
Instant.parse( "2008-11-10T05:51:33Z" )
现代方法使用java.time类。避免使用麻烦的旧的日期时间类,如Date
和Calendar
,因为它们现在已被java.time类取代。
你输入的字符串符合ISO 8601标准,用于表示日期时间值的格式化字符串。Java时间类默认使用标准格式来解析/生成字符串,因此无需指定格式化模式。
结尾的Z
代表Zulu
,意味着协调世界时。
Instant类表示时间线上的一个时刻,以协调世界时(UTC)为基准,分辨率为纳秒(最多九位数字的小数部分)。
Instant instant = Instant.parse( "2008-11-10T05:51:33Z" ) ;
java.util.Date
最好避免使用旧的遗留类java.util.Date
。但是如果必须使用,可以通过调用添加到旧类的新方法来进行转换到/从java.time。在这里,我们使用Date.from
。
java.util.Date d = java.util.Date.from( instant ) ;
Java.time 框架已内置在 Java 8 及以后版本。这些类取代了旧的令人头痛的遗留日期时间类,如java.util.Date
、Calendar
和SimpleDateFormat
。
该项目现处于维护模式,建议迁移到java.time类。
要了解更多,请参阅Oracle教程,并搜索Stack Overflow获取许多示例和解释。规范是JSR 310。
您可以直接将java.time对象与数据库互换。使用符合JDBC 4.2或更高版本的JDBC驱动程序。无需字符串,无需java.sql.*
类。
在哪里获取java.time类?
三十-额外项目将java.time与其他类扩展。这个项目是可能加入java.time的未来可能性的试验场。您可能会在这里找到一些有用的类,例如“Interval”,“YearWeek”,“YearQuarter”和“more”。
DateTime dateToGetFromString;
dateToGetFromString = DateTime.Parse(stringContainingDate);
你也可以使用DateTime类的TryParse函数,查看文档。