如何在Java上将日期转换为毫秒?

时间:2014-03-13 23:40:32

标签: java datetime

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

3 个答案:

答案 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作为第一个参数。

您应该使用SimpleDateFormatGregorianCalendar来执行此转换。由于此处已有一个很好的答案,显示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/

为了转换为毫秒,只需做一些基本的数学运算。