我对如何将给定时间(如下午9:30)转换为毫秒感到困惑,因为如果过了某段时间我需要运行代码。我已经知道如何通过以下代码获取当前时间(以毫秒为单位):
long timestamp = System.currentTimeMillis();
但是如何将晚上9:30转换为毫秒?我一直在研究几个小时,我似乎只能找到如何获得当前时间。
我的应用程序需要检查是否是晚上9:30或过去,如果是,请运行Toast消息。
答案 0 :(得分:1)
在Android上执行此操作的最快和最正确的方法是使用日历。您可以将Calendar实例设置为静态,并在需要时重复使用它。
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();
答案 1 :(得分:1)
我不需要以毫秒为单位检查时间,您可以使用Calendar
类将当前时间与所需值进行比较:
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();
}
请注意,此代码在午夜后无效。
答案 2 :(得分:0)
如果你需要时间以毫秒为单位,晚上9:30 今天,你应该使用Calendar
对象来建立你需要的日期和时间。
// 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();
答案 3 :(得分:0)
如果你有一个不错的日期时间库,则无需毫秒。
您可以在Android上使用Joda-Time库。
DateTime dateTime = new DateTime( 2014, 1, 2, 3, 4, 5 ); // Year, month, day, hour, minute, second.
boolean isNowAfterThatDateTime = DateTime.now().isAfter( dateTime );
答案 4 :(得分:-1)
为什么不用常数来做?你说你需要检查一下是否超过9; 30。因此,将该时间转换为毫秒并将其用作常量。 21:30 =(21 * 60 + 30)* 60 * 1000将给你9; 30毫秒(以毫秒为单位)与你得到的当前时间(以毫秒为单位)进行比较