long beginupd = new GregorianCalendar(2014,3,14,10,55,25).getTime().getTime();
Date date = new Date();
long milli=date.getTime();
System.out.println(beginupd);
System.out.println(milli);
System.out.println(date);
输出:1397462125000
1394787327009
星期五Mar 14 10:55:27 EET 2014
我错在哪里?为什么不相等呢?差值只有两秒,但输出差值非常大
OK !1月为0,12月为11。谢谢你David Wallace
如果不是Date
,则将其解析为Date
。日期格式是任意的,只要你能构造一个合适的SimpleDateFormat
来表示它。
有了Date
之后,可以使用Date.getTime()
来检索毫秒值。
对于您所展示的示例,如果您有一个字符串:
String datestr = "2014-14-03 01:39:00";
那么匹配的SimpleDateFormat
将是:
DateFormat format = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss");
转换为:
long millis = format.parse(datestr).getTime();
使用Date
是没有问题的,因为构造函数和getTime()
仍然是少数未弃用的组件。
编辑:我看到你已经编辑了你的问题,包括Date
的使用。您正在使用的构造函数已弃用,而且也不是很灵活。输入(您必须已经解析了日期组件才能使用它)。SimpleDateFormat
提供了一种不被弃用的方式将任意字符串转换为日期。
这不起作用的原因是您正在使用的已弃用的Date
构造函数期望year - 1900
作为第一个参数。
您应该使用SimpleDateFormat
或GregorianCalendar
来完成此转换。因为这里已经有一个很好的答案,显示SimpleDateFormat
的使用,这里是如何使用GregorianCalendar
在2014年3月14日1:39am。
new GregorianCalendar(2014, 2, 14, 1, 39, 0).getTime().getTime();
注意一月用0,十二月用11。
可以在这里找到一篇关于Date api的好文章。http://www.mkyong.com/java/java-time-elapsed-in-days-hours-minutes-seconds/
为了转换为毫秒,只需做一些基本的数学运算。