这是我的情况。该方法TodayFirst我想每天早上9:00并与Android System时间进行比较。但是我运行此方法将获得系统时间。
public String TodayFirst()
{
String time ="";
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(df.format(date));
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.HOUR_OF_DAY,9);
time = df.format(calendar.getTime());
}
答案 0 :(得分:1)
LocalTime now = LocalTime.now(ZoneId.systemDefault());
if (now.isAfter(LocalTime.of(9, 0))) {
System.out.println("It’s past 9");
}
请注意,它比您的问题中的代码更清晰。
是的,java.time
在较新的Android设备上都能很好地工作。它只需要至少Java 6 。
org.threeten.bp
(带子包)中导入日期和时间类。您的方法中需要一个return语句。假设您想返回time
,该方法将产生一个类似2018/08/28 09:21:03
的字符串。小时已设置为9,但分钟和秒与当前时间保持不变。另外,您正在为当前系统时间生成类似的字符串,但不将两者进行比较。
java.time
。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。答案 1 :(得分:0)
为此,您应该使用警报管理器。 from here you get how to use Alarm Manage.
警报管理器使用系统时钟
此警报管理器将在每上午9:00发送一个广播。使用广播,您可以做其他事情。
答案 2 :(得分:0)
You could do as belows:
public String TodayFirst()
{
String time;
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(df.format(date));
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.HOUR_OF_DAY,9);
calendar.set(calendar.MINUTE,0);
calendar.set(calendar.SECOND,0);
time = df.format(calendar.getTime());
return time; //time will be 2018/08/28 09:00:00 if you call the function today
}