如果时间包含“PM”,通知将不会发送 - swift

问题描述:

我有一些代码每天都会在特定时间发送通知。通知适用于任何时间,包含上午。但是,如果时间包含pm,则不会发送通知。我不知道为什么。这里是我的代码:如果时间包含“PM”,通知将不会发送 - swift

static func sendNotification(stringDate: String) { 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "HH:mm" 

     let content = UNMutableNotificationContent() 
     content.title = "Your daily news is ready!" 
     content.body = "Come and check out the latest headlines!" 

     if let date = dateFormatter.date(from: stringDate) { 
      let calendar = Calendar.current 

      let hour = calendar.component(.hour, from: date) 
      let minute = calendar.component(.minute, from: date) 

      var dateComponents = DateComponents() 
      dateComponents.hour = hour 
      dateComponents.minute = minute 

      let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true) 
      let request = UNNotificationRequest(identifier: "dateDone", content: content, trigger: trigger) 

      UNUserNotificationCenter.current().add(request, withCompletionHandler: nil) 
     } 
    } 

在功能上面我有一个名为stringDate参数,它就是一个包含我想在发送通知的时间的字符串。我真的不知道这些通知只在我的工作,所以任何帮助,将不胜感激。

当使用AM/PM,你应该使用不同的日期格式:

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "hh:mm a" 

如果你没有在输入控件,你可以先尝试解析它在24小时格式,如果这不适用于AM/PM格式

+0

它工作。感谢你的帮助 –

我认为你从字符串解析时间的方式可能是错误的,你可能在解析时摆脱AM/PM。我对Swift不熟悉,所以我可能是错的。不过,如果这是问题,我发现这个问题很有帮助。 xcode swift am/pm time to 24 hour format