【问题标题】:Setting Alarm on 9 AM GMT在格林威治标准时间上午 9 点设置闹钟
【发布时间】:2012-03-19 23:54:31
【问题描述】:

我遇到了一个奇怪的问题。我需要将任务设置为在格林威治标准时间上午 9 点准确运行。这是我正在使用的代码:

AlarmManager mgr = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance(TimeZone
                    .getTimeZone("GMT"));
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.HOUR, 9);
            calendar.set(Calendar.MINUTE, 0);

            mgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);

我的时区是 GMT+2。作为测试,我此时尝试设置警报:

Alarm time = My time - 2 hours + couple of minutes to catch the alarm

但它从来没有奏效。我错过了什么吗?提前致谢。

【问题讨论】:

    标签: android timezone alarmmanager gmt


    【解决方案1】:

    这可能是问题所在:

    calendar.set(Calendar.HOUR, 9);
    

    这是设置“上午或下午的时间” - 如果您已经在下午,它会将其设置为晚上 9 点。我想你想要:

    calendar.set(Calendar.HOUR_OF_DAY, 9);
    

    这可能无法解释您的问题,但肯定是一个需要解决的问题。请注意,它将在同一天 - 因此,如果您在上午 9 点之后执行此操作,它不会触发。

    (您也应该将秒字段设置为 0。)

    【讨论】:

    • 我尝试将 HOUR 设置为 13,因为我的时区现在是 15。不幸的是,这不起作用..
    • @Egor: HOUR 不应该是 13 或 15 - 它应该是 1 或 3。HOUR_OF_DAY 应该是 13 或 15。
    • 哦,当然,现在知道了。谢谢!
    猜你喜欢
    • 2019-11-25
    • 1970-01-01
    • 2011-05-13
    • 2010-12-02
    • 2013-03-10
    • 2011-02-04
    • 1970-01-01
    • 2011-10-30
    • 2013-06-01
    相关资源
    最近更新 更多