【问题标题】:How to set alarm using DateTime object for specific date and time in xamarin android?如何在 xamarin android 中使用 DateTime 对象为特定日期和时间设置闹钟?
【发布时间】:2019-09-08 06:32:14
【问题描述】:

我正在使用 android xamarin 中的警报管理器,并且我有一个日期时间对象,我想为该特定日期时间设置警报。目前我正在使用以下代码设置同一天分钟的闹钟。

          alarmIntent.PutExtra("title", reminder.Title);
          alarmIntent.PutExtra("description", reminder.Description);
          int _id = reminder.ID;
          PendingIntent pendingIntent = PendingIntent.GetBroadcast(Activity, _id, alarmIntent, PendingIntentFlags.UpdateCurrent);
          AlarmManager alarmManager = (AlarmManager)Activity.GetSystemService(Context.AlarmService);
          DateTime dt = DateTime.ParseExact(reminder.ReminderTime, "yyyy.MM.dd HH:mm", CultureInfo.InvariantCulture);

          var totalMinutes = dt.Minute - DateTime.Now.Minute;
          var time = (totalMinutes * 60) * 1000;
          alarmManager.Set(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + time, pendingIntent);```

above code is working fine i just want to set alarm on a specific time.

【问题讨论】:

  • 具体时间是什么意思?
  • 如前所述,我有一个日期时间类型的对象,即特定日期时间

标签: c# android xamarin alarmmanager


【解决方案1】:
DateTime date = // set some date;
var ms = (long)(date - new DateTime(1970, 1, 1)).TotalMilliseconds
alarmManager.Set(AlarmType.RtcWakeup, ms, pendingIntent);

【讨论】:

  • 谢谢@Jason,你能解释一下为什么是 1970 年吗?
  • Unix 时间戳使用 1/1/1970 作为起始点
【解决方案2】:
DateTime dt= //some date
DateTimeOffset dateOffsetValue = DateTimeOffset.Parse(dt.ToString());
                var millisec = dateOffsetValue.ToUnixTimeMilliseconds();

                alarmManager.Set(AlarmType.RtcWakeup, millisec, pendingIntent);

以上代码解决了我的问题

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 2011-06-09
    • 2016-09-25
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多