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