Java Calendar.getTimeInMillis

时间:2011-10-20 16:56:31

标签: java calendar

我正在尝试将格式为“201110250830”(yyyyMMddhhmm)的字符串时间戳转换为毫秒(长)。我正在使用以下代码:

Calendar t = Calendar.getInstance();
         t.set(Integer.parseInt(ts.substring(0,4)),
               Integer.parseInt(ts.substring(4,6)) - 1, // month is 0 based!
               Integer.parseInt(ts.substring(6,8)),
               Integer.parseInt(ts.substring(8,10)),
               Integer.parseInt(ts.substring(10,12)),
               0);
return t.getTimeInMillis();

然而,我有时候会有几毫秒的差异。例如:

long t1 = timestampToLong("201110250830");
long t2 = timestampToLong("201110250831");
assertEquals(60*1000, t2 - t1);

有时给了我:

Got exception: java.lang.AssertionError: expected:<60000> but was:<60001>

我检查了文档,但找不到任何相关内容。任何的想法? (看起来像是美好的一天,我将在这里学到一些东西!: - )

谢谢!

2 个答案:

答案 0 :(得分:5)

在致电t.clear()之前致电set()

欢迎来到Java时间/日期处理的世界。

答案 1 :(得分:4)

你可以像这样使用DateFormat。

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmm");
Date ins = df.parse("201110250830");
long ts = ins.getTime();