在哪种类型的变量中以毫秒为单位存储时间?选择正确的数据类型

In which type of variable store time in millis? Choosing a correct data type

在 Java 我试图通过将两个不同的小时转换为毫秒来比较它们 if (20:00 > 19:30) // do anything。以毫秒为单位,它将是 if (72000000 > 70200000) // do anything

但智能手机做得不好。我将数字存储在变量 long 中,就像在 class 日历中一样,方法 myCal.getTimeInMillis() returns a long,但它不起作用。

我已经尝试将变量的数据类型从 long 更改为 double 并且它确实有效,所以我发现变量中的那些大数字只是 "doesn't fit",但是,为什么 Java 日历方法 getTimeInMillis() returns 很长?

Java 日历中的时间是如何计算的?提前致谢。

编辑:

感谢您的回答和时间,我很抱歉这个问题,因为它确实可以比较存储在长变量中的不同时间。我又试了一次,它确实有效(我不知道为什么它以前不起作用)。我正在为 Android 制作一个闹钟应用程序,我不仅要比较两个小时(以及分钟和秒),还要比较星期几等等。所以我要把这个问题的解决方案标记为@Sufiyan Ghori 的答案,因为我认为它真的可以帮助我,我想我会删除这个问题,因为它没有任何意义。

我是新来的(在一般编程方面),很抱歉这个愚蠢的问题。

您可以在将时间设置为两个单独的 Date 对象后使用 Date::beforeDate::after 方法,而不是在将小时数转换为毫秒后比较小时数。

Date date1 = new Date(); // set time for first hour.
Date date2 = new Date(); // set time for second hour.

您可以使用Calendar为每个Date对象设置时间,像这样,

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,12);
cal.set(Calendar.MINUTE,10);
cal.set(Calendar.SECOND,31);
cal.set(Calendar.MILLISECOND,05);

date1 = cal.getTime(); //set time for first hour

然后用这些来比较,

if(date1.after(date2)){
}

if(date1.before(date2)){
}

Date::equals,

if(date1.equals(date2)){
}

getTimeInMillis() 不是从当天的开始算起 return 毫秒,而是从 1970 年 1 月 1 日 00:00:00 GMT 算起 returns 毫秒。

查看日历文档 class:java.util.Calendar