2014-11-09 60 views
0

我有一个奇怪的问题。下面的代码在while循环中执行几次。现在,每隔一段时间,这个sdf.parse就会在小时,分钟和秒钟内返回0。日期示例如下所示...SimpleDateFormat缺失时间

2014:3:7:8:0 
2014:3:7:9:0 
2014:3:7:10:0 
2014:3:7:11:0 
2014:3:7:12:0 * This returns 0's 
2014:3:7:13:0 
2014:3:7:14:0 

下面是代码。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy:M:d:h:m"); 
sdf.setTimeZone(TimeZone.getDefault()); 
Date sTime = null; 
try { 
    sTime = sdf.parse(start); 
} catch (ParseException e) { 
    e.printStackTrace(); 
    return null; 
} 
+1

可能的重复[Error conversion parsing TIME dd.MM.yyyy','12:00](http://stackoverflow.com/questions/22346705/error-converting-parsing-time-dd-mm-yyyy- 1200)。发布前请先搜索StackOverflow。你会发现有数百个代码示例与你的代码进行比较,发现问题。 – 2014-11-09 19:05:05

回答

2

我认为在12小时位置在12小时的格式得到读取,因此它是相同的为0的图案尝试H代替h

SimpleDateFormat sdf = new SimpleDateFormat("yyyy:M:d:H:m"); 
+0

你是男人!将在8分钟内接受答案;)谢谢。 – lostdev 2014-11-09 00:29:36

+0

不客气,很高兴我可以帮助:) – 2014-11-09 00:30:32

2

“H”表示1-小时12格式。如果你想要0-23格式,你应该使用'H'(大写)。此外,您不需要明确设置默认时区,因为默认情况下它等于TimeZone.getDefault()。