我怎样才能正确解析这种日期?
How can I correctly parse this kind of date?
我无法为我的日期找到正确且干净的工作解决方案,格式如下:
201406082159
(6 月 8 日,此处 21:59)
我最后尝试的是:
SimpleDateFormat format2 = new SimpleDateFormat("YYYYMMDDHHMM", Locale.ENGLISH);
遗憾的是它无法正常打印
Sun Dec 29 21:00:00 CET 2013
分钟由 m
而非 M
设置
年份由 y
而非 Y
设置
天数(以月为单位)由 d
而非 D
(以年为单位)设置
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH);
我建议看一下 SimpleDateFormat class 的 api。
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
它将帮助您解决当前的问题,如果您有不同的日期格式要解析,将来您一定能够找到正确的模式。
您使用的是过时的旧版 类。使用 java.time 类 进行日期时间工作。
DateTimeFormatter
定义格式模式。
String input = "201406082159";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuuMMddHHmm" );
LocalDateTime
您的输入缺少有关任何与 UTC 或时区的偏移量的信息。所以我们解析为 LocalDateTime
.
LocalDateTime ldt = LocalDateTime.parse( input , f );
ZonedDateTime
如果您知道数据的上下文适用于某个时区,请应用它。指定 proper time zone name。切勿使用 3-4 个字母的缩写,例如 CET
或 EST
或 IST
,因为它们不是真正的时区,没有标准化,甚至不是唯一的(!)。
ZoneId zoneId = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = ldt.atZone( zoneId );
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些 类 取代了旧的麻烦的日期时间 类,例如 java.util.Date
、.Calendar
和 java.text.SimpleDateFormat
。
Joda-Time project, now in maintenance mode,建议迁移到java.time。
要了解更多信息,请参阅 Oracle Tutorial。并在 Stack Overflow 中搜索许多示例和解释。
许多 java.time 功能被移植到 ThreeTen-Backport and further adapted to Android in ThreeTenABP 中的 Java 6 和 7。
ThreeTen-Extra 项目扩展了 java.time 并增加了 类。该项目是未来可能添加到 java.time.
的试验场
我无法为我的日期找到正确且干净的工作解决方案,格式如下:
201406082159
(6 月 8 日,此处 21:59)
我最后尝试的是:
SimpleDateFormat format2 = new SimpleDateFormat("YYYYMMDDHHMM", Locale.ENGLISH);
遗憾的是它无法正常打印
Sun Dec 29 21:00:00 CET 2013
分钟由 m
而非 M
年份由 y
而非 Y
天数(以月为单位)由 d
而非 D
(以年为单位)设置
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH);
我建议看一下 SimpleDateFormat class 的 api。
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
它将帮助您解决当前的问题,如果您有不同的日期格式要解析,将来您一定能够找到正确的模式。
您使用的是过时的旧版 类。使用 java.time 类 进行日期时间工作。
DateTimeFormatter
定义格式模式。
String input = "201406082159";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuuMMddHHmm" );
LocalDateTime
您的输入缺少有关任何与 UTC 或时区的偏移量的信息。所以我们解析为 LocalDateTime
.
LocalDateTime ldt = LocalDateTime.parse( input , f );
ZonedDateTime
如果您知道数据的上下文适用于某个时区,请应用它。指定 proper time zone name。切勿使用 3-4 个字母的缩写,例如 CET
或 EST
或 IST
,因为它们不是真正的时区,没有标准化,甚至不是唯一的(!)。
ZoneId zoneId = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = ldt.atZone( zoneId );
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些 类 取代了旧的麻烦的日期时间 类,例如 java.util.Date
、.Calendar
和 java.text.SimpleDateFormat
。
Joda-Time project, now in maintenance mode,建议迁移到java.time。
要了解更多信息,请参阅 Oracle Tutorial。并在 Stack Overflow 中搜索许多示例和解释。
许多 java.time 功能被移植到 ThreeTen-Backport and further adapted to Android in ThreeTenABP 中的 Java 6 和 7。
ThreeTen-Extra 项目扩展了 java.time 并增加了 类。该项目是未来可能添加到 java.time.
的试验场