Java 哪种类型的变量存储时间(毫秒)?选择正确的数据类型

Java 哪种类型的变量存储时间(毫秒)?选择正确的数据类型,java,types,calendar,long-integer,Java,Types,Calendar,Long Integer,在Java中,我试图通过将两个不同的小时转换为毫秒if(20:00>19:30)//执行任何操作来比较它们。以毫秒为单位,如果(72000000>70200000)//做任何事 但智能手机做得并不好。我将数字存储在变量long中,就像在类日历中一样,方法myCal.getTimeInMillis()返回一个long,但它不起作用 我已经尝试将变量的数据类型从long更改为double,并且确实有效,因此我发现这些大数字根本“不适合”变量,但是,为什么Java日历方法getTimeInMillis

在Java中,我试图通过将两个不同的小时转换为毫秒
if(20:00>19:30)//执行任何操作来比较它们。以毫秒为单位,如果(72000000>70200000)//做任何事

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

我已经尝试将变量的数据类型从
long
更改为
double
,并且确实有效,因此我发现这些大数字根本“不适合”变量,但是,为什么Java日历方法
getTimeInMillis()
返回long

Java日历中的时间是如何工作的?提前谢谢

编辑:

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


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

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

Date date1 = new Date(); // set time for first hour.
Date date2 = new Date(); // set time for second hour.
您可以使用
日历
为每个
日期
对象设置时间,如下所示

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()不返回从当天开始经过的毫秒数,它返回自1970年1月1日00:00:00 GMT以来经过的毫秒数


看看Calendar类的文档:

72000000
不是一个大数字,顺便说一句,MAX_INTEGER是
2147483647
,MAX_LONG是
9.10^18
,我担心为了避免投票失败,你必须提供一个“它不起作用”的具体例子。请输入密码,以及问题所在。如果出现异常,发布堆栈跟踪并指出它发生在哪一行(因为行号很难对齐)。在android中,您不需要比较闹钟来创建闹钟……您可以使用
AlarmManager
。实际上我使用的是AlarmManager,但我有问题。例如,如果用户为下周一设置了警报,而今天是周二,则警报会立即“响起”。它不会等到下周一。因为它,我想比较日期。你知道另一种方法吗?这种行为可能会有很多问题,其中之一是如果你正在为过去的时间创建一个警报的
PendingIntent
,它将立即被触发…在这里有很多关于这个主题的问题,请搜索以解决你的问题,如果找不到正确答案,请发布一个新问题。