2017-04-27 4 views
-1
 let dateFormatter = DateFormatter() 
     let dateFormatter2 = DateFormatter() 

     dateFormatter.timeZone = TimeZone(abbreviation: "UTC") 

     dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 

     let date = dateFormatter.date(from: event!) 

     dateFormatter2.timeZone = TimeZone.current 
     let dateString = dateFormatter2.string(from: date!) 

     let finalDate = dateFormatter2.date(from: dateString) 
     return finalDate! 

私は現地時間に変換しようとしているUTCの文字列の日付を私に与えるスポーツイベントがあります。このコードは、この質問をしたときにこのサイトで与えられた数十の例と似ていますが、うまくいきません。UTCからローカルコードへのこの変換に時間がないのはなぜですか?

+0

を通じて最も可能性が高い、時間差を追加する必要があります。 –

+2

入力と実際の出力と期待される出力は何ですか?なぜあなたは文字列 - >日付 - >文字列 - >日付を変換しますか?また、「日付」は絶対的な時刻を表し、**は時間帯がありません**。 –

+0

@Danielいいえ、フォーマッタで 'Z'を引用しないでください。 – rmaddy

答えて

1

これはISO8601フォーマッタです:

static let iso8601: DateFormatter = { 
    let formatter = DateFormatter() 
    formatter.calendar = Calendar(identifier: .iso8601) 
    formatter.locale = Locale(identifier: "en_US_POSIX") 
    formatter.timeZone = TimeZone(secondsFromGMT: 0) 
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" 
    return formatter 
}() 

これはDateにあなたの文字列になります。

あなたはあなたのイベントの形式は何TimeZone.autoupdatingCurrent

+0

私は時差を追加する方法を説明できますか?私は文字列で日付を作成した後、または前にそれを行うのですか? –

+0

まずは、コードを見て、タイムゾーンをTimeZone.autoUpdatingCurrentに変更し、TimeZone.autoUpdatingCurrent.daylightSavingsTimeOffset()を追加してください。 – SeanLintern88

関連する問題