0

毎日特定の時刻に通知を送信するコードがあります。この通知は、amを含む任意の時刻に有効です。ただし、時刻がpmを含む場合、通知は送信されません。私は本当に理由を知らない。ここに私のコードは次のとおりです。私は単に私が通知を送信する時刻を含む文字列ですstringDateというパラメータがあり、上記の機能で時刻に「PM」が含まれていると通知が送られない

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) 
     } 
    } 

。私は本当に通知が働いているだけなので、助けていただければ幸いです。

答えて

1

ますが、別の日付形式を使用する必要がありますあなたが入力を制御を持っていない場合、あなたは最初の24時間形式でそれを解析しようとすることができ

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

をし、それがAM/PMフォーマットでは機能しない場合

+0

それは働いた。あなたのすべての協力に感謝します –

0

文字列から時間を解析する方法が間違っている可能性があると思うと、解析するときにAM/PMを取り除く可能性があります。私はスイフトに精通していないので、間違っているかもしれません。しかし、それが問題なら、この質問が役に立ちました。 AM/PMを使用する場合xcode swift am/pm time to 24 hour format

関連する問題