Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将时间转换为毫秒?_Java_Android_Time_Milliseconds - Fatal编程技术网

Java 如何将时间转换为毫秒?

Java 如何将时间转换为毫秒?,java,android,time,milliseconds,Java,Android,Time,Milliseconds,我对如何将给定的时间(如9:30pm)转换为毫秒感到非常困惑,因为如果超过某个时间,我需要运行代码。我已经知道如何通过以下代码获取以毫秒为单位的当前时间: long timestamp = System.currentTimeMillis(); 但是我如何将晚上9:30转换成毫秒呢?我已经研究了几个小时了,我似乎只能找到如何获得当前时间 我的应用程序需要检查是晚上9:30还是过去了,如果是的话,运行一条toast消息。在Android上最快、最正确的方法就是使用日历。您可以将日历实例设置为静态

我对如何将给定的时间(如9:30pm)转换为毫秒感到非常困惑,因为如果超过某个时间,我需要运行代码。我已经知道如何通过以下代码获取以毫秒为单位的当前时间:

long timestamp = System.currentTimeMillis();
但是我如何将晚上9:30转换成毫秒呢?我已经研究了几个小时了,我似乎只能找到如何获得当前时间


我的应用程序需要检查是晚上9:30还是过去了,如果是的话,运行一条toast消息。

在Android上最快、最正确的方法就是使用日历。您可以将日历实例设置为静态,并在需要时重用它

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, 9);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.AM_PM, Calendar.PM);
long timeInMillis = calendar.getTimeInMillis();

为什么不用一个常数呢?你说你需要检查是否超过9点;30因此,将时间转换为毫秒,并将其用作常量。21:30=(21*60+30)*60*1000会给你9分;30毫秒要与以毫秒为单位的当前时间进行比较

我不需要以毫秒为单位检查时间,您可以使用
日历
类将当前时间与所需值进行比较:

Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
if (hour > 21 || (hour == 21 && minute >= 30)) {
    doSomeJob();
}

请注意,此代码在午夜后将不起作用。

如果您需要今天9:30pm的时间(以毫秒为单位),则应使用
日历
对象生成所需的日期和时间

 // init calendar with current date and default locale
 Calendar cal = Calendar.getInstance(Locale.getDefault());
 cal.setTime(new Date());

 // set new time
 cal.set(Calendar.HOUR_OF_DAY, 21);
 cal.set(Calendar.MINUTE, 30);
 cal.set(Calendar.SECOND, 0);

 // obtain given time in ms
 long today930PMinMills = cal.getTimeInMillis();

如果你有一个像样的日期时间库,就不需要毫秒

您可以在Android上使用该库

DateTime dateTime = new DateTime( 2014, 1, 2, 3, 4, 5 );  // Year, month, day, hour, minute, second.
boolean isNowAfterThatDateTime = DateTime.now().isAfter( dateTime );

您应该在java.util.Date上使用
after
方法。例如,在夏令时更改和其他类型的时移中,此方法将失败