0

我有一些代碼每天都會在特定時間發送通知。通知適用於任何時間,包含上午。但是,如果時間包含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參數,它就是一個包含我想在發送通知的時間的字符串。我真的不知道這些通知只在我的工作,所以任何幫助,將不勝感激。

回答

1

當使用AM/PM,你應該使用不同的日期格式:

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

如果你沒有在輸入控件,你可以先嚐試解析它在24小時格式,如果這不適用於AM/PM格式

+0

它工作。感謝你的幫助 –

0

我認爲你從字符串解析時間的方式可能是錯誤的,你可能在解析時擺脫AM/PM。我對Swift不熟悉,所以我可能是錯的。不過,如果這是問題,我發現這個問題很有幫助。 xcode swift am/pm time to 24 hour format

相關問題