2017-07-09 11 views
-1

私のアプリケーションには、let time = "2017-07-09T09:17:08+00:00"のような時刻と日付を示す文字列があります。私はこの文字列をUTCに入れて、それをESTの時刻を表す文字列に変換したいと考えています。私の例では、結果の文字列は2017-07-09T05:17:08+00:00になります。これはどうすればできますか?SwiftでUTCをESTに変換する

私は

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
dateFormatter.timeZone = TimeZone.current 
let date = dateFormatter.date(from:time!)! 

を使用してみましたが、日付を印刷することは私にUTCで同じ時間を与えてきました。

+0

あなたはいつもESTを望んでいますか、またはユーザーが現地時間にそれを見るようにしますか? – rmaddy

+0

@rmaddy現地時間が優先されます。 – ch1maera

+0

FYI - '2017-07-09T05:17:08 + 00:00'はESTではありません。これはまだUTCですが、UTCの早い時期です。 – rmaddy

答えて

1

DateFormatterを使用して、DateオブジェクトをStringに変換するだけで済みます。デフォルトでは、日付は現地時間にフォーマットされます。

// First, get a Date from the String 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
let date = dateFormatter.date(from:time!)! 

// Now, get a new string from the Date in the proper format for the user's locale 
dateFormatter.dateFormat = nil 
dateFormatter.dateStyle = .long // set as desired 
dateFormatter.timeStyle = .medium // set as desired 
let local = dateFormatter.string(from: date) 

この場合、どちらのコードセットにもタイムゾーンを設定する必要はありません。

関連する問題