我有一个奇怪的问题。下面的代码在while循环中执行几次。现在,每隔一段时间,这个sdf.parse会返回小时,分钟和秒的0。日期的一个例子看起来像这样......
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;
}
答案 0 :(得分:2)
我认为小时位置的12
以12h格式读取,因此与0相同。在模式中尝试H
而不是h
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:M:d:H:m");
答案 1 :(得分:2)
'h'表示1-12格式的小时。如果你想要0-23格式,你应该使用'H'(大写)。此外,您无需显式设置默认时区,因为默认情况下它等于TimeZone.getDefault()。