とあるiOSアプリ開発で、日付チェックを行ってその結果で処理を分岐させるような機能があったのですが、Date()で日付を取得しているため、端末の日付設定を変えるとその結果も変わってしまうため、困っていました。
ということで、端末の日付設定につられない方法を探しました。
 要はどこかにHTTP接続して、そのレスポンスから日付を確認することで対応できます。
getTimeFromServer { (serverDate) in
   print(serverDate)
 }   
func getTimeFromServer(completionHandler:@escaping (_ getResDate: Date?) -> Void){
    let url = URL(string: "https://www.apple.com")
    let task = URLSession.shared.dataTask(with: url!) {(data, response, error) in
        let httpResponse = response as? HTTPURLResponse
        if let contentType = httpResponse!.allHeaderFields["Date"] as? String {
            //print(httpResponse)
            let dFormatter = DateFormatter()
            dFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss z"
            let serverTime = dFormatter.date(from: contentType)
            completionHandler(serverTime)
        }
    }
    task.resume()
}参考
iOS Swiftで実際の実際の日付と時刻を取得する方法は?ユーザーがデバイス設定から日付と時刻を変更した場合でも
 https://www.fixes.pub/program/140360.html

コメント