我无法为我的日期找到正确且干净的工作解决方案,其格式如下:
201406082159
(6月8日,21:59)
最后我试过这个:
SimpleDateFormat format2 = new SimpleDateFormat("YYYYMMDDHHMM", Locale.ENGLISH);
可悲的是,它无法正常工作并打印出来
Sun Dec 29 21:00:00 CET 2013
答案 0 :(得分:8)
分钟由m
而不是M
年份由y
而不是Y
天数(月份)由d
而不是D
(年份)设置
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH);
答案 1 :(得分:3)
我建议看一下SimpleDateFormat类的api。
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
它可以帮助您解决当前的问题,如果您有不同的日期格式要解析,您肯定能够在将来找到正确的模式。
答案 2 :(得分:0)
您正在使用过时的遗留类。使用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。切勿使用诸如CET
或EST
或IST
之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId zoneId = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = ldt.atZone( zoneId );
java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
。
现在位于Joda-Time的maintenance mode项目建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP。
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。