使用java.text.DateFormat - 或者更有可能的是SimpleDateFormat.
或者,使用其无限更好的API 去Joda Time.小心Java内置API - DateFormats不是线程安全的.(它们在Joda Time中,几乎在所有地方都使用不可变类型.)
Joda Time API的示例(未经测试 - 除了可能的时区位之外应该没问题):
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd'T'HH:mm:ssZ");
DateTime dt = fmt.parse("2008-11-10T05:51:33Z");
Run Code Online (Sandbox Code Playgroud)
Instant.parse( "2008-11-10T05:51:33Z" )
Run Code Online (Sandbox Code Playgroud)
现代方法使用 java.time 类。避免麻烦的旧日期时间类,例如Date
和Calendar
因为它们现在被 java.time 类取代。
您的输入字符串符合 ISO 8601 标准,用于格式化表示日期时间值的字符串。java.time 类在解析/生成字符串时默认使用标准格式,因此无需指定格式模式。
在Z
上月底是短期的Zulu
,并指UTC。
该Instant
级表示时间轴上的时刻UTC,分辨率为纳秒(最多小数的9个位数)。
Instant instant = Instant.parse( "2008-11-10T05:51:33Z" ) ;
Run Code Online (Sandbox Code Playgroud)
java.util.Date
最好避免旧的遗留类java.util.Date
。但是,如果必须,您可以通过调用添加到旧类的新方法来转换为 java.time 或从 java.time 转换。这里我们使用Date.from
.
java.util.Date d = java.util.Date.from( instant ) ;
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本。这些类取代了麻烦的旧的遗留日期时间类,例如java.util.Date
, Calendar
, & SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规范是JSR 310。
您可以直接与您的数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC 驱动程序。不需要字符串,不需要类。java.sql.*
从哪里获得 java.time 类?
该ThreeTen-额外项目与其他类扩展java.time。该项目是未来可能添加到 java.time 的试验场。你可能在这里找到一些有用的类,比如Interval
,YearWeek
,YearQuarter
,和更多。