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
Fri Mar 14 10:55:27 EET 2014
我错了什么?为什么不平等?差异onyl两秒但输出差异非常大
OK! 1月为0,12月为11。谢谢David Wallace
答案 0 :(得分:2)
如果它不是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
提供了一种不推荐的方法来将任意字符串转换为日期。
答案 1 :(得分:1)
这不起作用的原因是因为您使用的已弃用的Date
构造函数需要year - 1900
作为第一个参数。
您应该使用SimpleDateFormat
或GregorianCalendar
来执行此转换。由于此处已有一个很好的答案,显示SimpleDateFormat
的使用,以及您在2014年3月14日凌晨1点39分使用GregorianCalendar
的方法。
new GregorianCalendar(2014, 2, 14, 1, 39, 0).getTime().getTime();
请注意月份使用0表示1月份,11表示12月份。
答案 2 :(得分:0)
有一篇关于Date API的文章可以在这里找到。 http://www.mkyong.com/java/java-time-elapsed-in-days-hours-minutes-seconds/
为了转换为毫秒,只需做一些基本的数学运算。