如何获取每天上午9:00与Android System时间进行比较?

时间:2018-08-28 03:26:58

标签: android

这是我的情况。该方法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());
}

3 个答案:

答案 0 :(得分:1)

java.time

    LocalTime now = LocalTime.now(ZoneId.systemDefault());
    if (now.isAfter(LocalTime.of(9, 0))) {
        System.out.println("It’s past 9");
    }

请注意,它比您的问题中的代码更清晰。

问题:我可以在Android上使用java.time吗?

是的,java.time在较新的Android设备上都能很好地工作。它只需要至少Java 6

  • 在Java 8和更高版本以及较新的Android设备上(我被告知,从API级别26开始),内置了现代API。
  • 在Java 6和7中,获得ThreeTen Backport,即新类的backport(JSR 310的ThreeTen;请参见底部的链接)。
  • 在(较旧的)Android上,使用Android版本的ThreeTen Backport。叫做ThreeTenABP。并确保您从org.threeten.bp(带子包)中导入日期和时间类。

您的代码出了什么问题?

您的方法中需要一个return语句。假设您想返回time,该方法将产生一个类似2018/08/28 09:21:03的字符串。小时已设置为9,但分钟和秒与当前时间保持不变。另外,您正在为当前系统时间生成类似的字符串,但不将两者进行比较。

链接

答案 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
    }