我的DateFormat应该是正确的(24小时格式)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
但是当我尝试解析时,我有一个最奇怪的'bug'(sdf.parse(string))
“2010-03-28 02 :28:25”
我明白了:
Sun Mar 28 03 :28:25 CEST 2010
由于一些奇怪的原因,它增加了一个小时。这也是给我这种行为的唯一日期,其他时间等工作得很好。它始终是代表小时的“02”。
有什么想法吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
在你的时区没有2010-03-28 02:28:25这样的时间。 由于夏令时,时间从01:59:59直接到03:00:00。
为避免此类问题,请使用新的java.time
类,并始终在适当的时候指定您的时区。
String input = "2010-03-28 02:28:25".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ; // Has no time zone nor offset-from-UTC.
ZoneId z = ZoneId.of( "Europe/Paris" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;