【问题标题】:Android Calendar has always the same dateAndroid 日历始终具有相同的日期
【发布时间】:2011-02-24 14:05:59
【问题描述】:

我希望在用户选中复选框时发出警报。这是我的代码:

if (cb1.isChecked()) 
    {
      Calendar calA = Calendar.getInstance();
      //calA.set(Calendar.YEAR, Calendar.YEAR);
      //calA.set(Calendar.MONTH, Calendar.MONTH);
      //calA.set(Calendar.DAY_OF_MONTH, Calendar.DAY_OF_MONTH);
      calA.set(Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY);
      calA.set(Calendar.MINUTE, Calendar.MINUTE);
      calA.set(Calendar.SECOND, Calendar.SECOND);
      calA.set(Calendar.MILLISECOND, Calendar.MILLISECOND);
      alarmManager.set(AlarmManager.RTC_WAKEUP, calA.getTimeInMillis(), pendingIntentA);
      Toast.makeText(main.this, "Set time: " + String.valueOf(calA.getTime()), Toast.LENGTH_SHORT).show();
    }

其他代码工作正常,如果我将小时和分钟设置为特定的,例如

calA.set(Calendar.HOUR_OF_DAY, 15);
calA.set(Calendar.MINUTE, 24);

它正在工作,但是使用这段代码我总是会收到这个 toast 消息: 3 月 5 日星期六 11:12:00 或 3 月 5 日星期六 11:12:13 (日期和时间都不好)

我的代码有什么问题?

【问题讨论】:

  • 好的。我试过这个:Calendar now = Calendar.getInstance(); alarmManager.set(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntentA);

标签: android calendar


【解决方案1】:

Calendar.HOUR_OF_DAY 是一个常数,恰好是一个整数。

当你

calA.set(Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY);

实际上,您将一天中的小时设置为恰好为此常数选择的任何数字。这个值对于一天中的小时没有实际意义,所以它会产生一个垃圾结果。

当您获取日历时,它默认设置为当前时间,所以如果您要这样做,请不要设置时间:

与其他对语言环境敏感的类一样,Calendar 提供了一个类方法 getInstance,用于获取这种类型的普遍有用的对象。 Calendar 的 getInstance 方法返回一个 Calendar 对象其日历字段已被初始化为当前日期和时间

Calendar rightNow = Calendar.getInstance();

如果您想设置“未来 5 分钟”之类的时间,请执行以下操作:

calA.add(Calendar.MINUTE, 5);

如果您仍然得到不正确的时间,请验证系统时间设置是否正确。

来源:

【讨论】:

  • 您是否希望听到声音警报?警报管理器不是为此而设计的。当警报触发时,您为其提供的意图将被触发,正如 in the documentation 所解释的那样。
【解决方案2】:

Calendar calA = Calendar.getInstance(); 返回一个日历对象,其区域设置基于系统设置,并且其时间字段已使用当前日期和时间进行初始化。

Sebastian P 说得对,Calendar.HOUR_OF_DAY 是一个常量,一个用于引用实际小时值的键/索引。

http://developer.android.com/reference/java/util/Calendar.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多