2017-10-14 10 views
1

データベースと現在との時差を計算します。Swift3 - データベースと現在の日付との時差を計算します。

"Fri Oct 13 2017 15:14:27 GMT + 0200(CEST)"の正しいdateFormatter.dateFormatは何ですか?ここで

は、私のコードのトライアル..です

http://userguide.icu-project.org/formatparse/datetime

let input = "Fri Oct 13 2017 15:14:27 GMT+0200 (CEST)" 

    let dateFormatter = DateFormatter() 
    var userCalendar = Calendar.current 
    userCalendar.timeZone = TimeZone.current 
    let requestedComponent: Set<Calendar.Component> = [.hour,.minute,.second] 
    dateFormatter.dateFormat = "EEE MMM dd yyyy kk:mm:ss" 
    let startTime = Date() 
    let endTime = dateFormatter.date(from: input) 
    let timeDifference = userCalendar.dateComponents(requestedComponent, from: endTime!, to: startTime) 

    print(timeDifference) 

    let date = Calendar(identifier: .gregorian).date(from: timeDifference) 
    dateFormatter.dateFormat = "HH:mm:ss" 
    let dateString = dateFormatter.string(from: date!) 

    print(dateString) 

厥で作業:

あなたが最後の1を削除する必要がありますので、あなたの文字列に2つのタイムゾーンがあり
dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss" 
let endTime = dateFormatter.date(from: "14/10/17 11:00:00") 

答えて

1

それを解析する前に 'GMT'をエスケープします。

let input = "Fri Oct 13 2017 15:14:27 GMT+0200 (CEST)" 
let dateString = input.components(separatedBy: " ").dropLast().joined(separator: " ") 
let dateFormatter = DateFormatter() 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") 
dateFormatter.dateFormat = "EEE MMM dd yyyy HH:mm:ss 'GMT'Z" 
let date = dateFormatter.date(from: dateString) 

あなたが.positional DateComponentsFormatterを使用してunitsStyleを使用することができ、経過時間を表示するには:またkkあなたがそれはあなたがHHを使用する必要があり、この場合では00-23で何をしたい01〜24時間使用されています。

let elapsedTime = Date().timeIntervalSince(date) 
let dateComponentsFormatter = DateComponentsFormatter() 
dateComponentsFormatter.unitsStyle = .positional 
dateComponentsFormatter.string(from: elapsedTime) // "23:32:34" 
+1

これはすばらしく機能します。ありがとうございます:-) – Steffen

+1

大丈夫です!正しいものとしてマークする – Steffen

関連する問題