我有以下問題。讓我們假設我從服務器接收包含日期時間格式如下一些字符串:如何從字符串中獲取NSDate而不將其轉換爲UTC
yyyy-MM-dd'T'HH:mm:ssxxxx
這是一個服務器的日期時間,我想在應用程序中顯示,因爲它是。所以,如果我收到日期時間:
2017-04-07T10:29:23+ 02:00
這意味着在服務器10:29:23 (08:29:23 UTC)
,我想在應用程序中顯示它:
04.07.2017 10:29:23
但每當我嘗試轉換NSDate的字符串我得到日期轉換爲UTC,這是不希望的,因爲我失去了有關服務器時區的信息。我現在使用以下代碼:
let formatter = NSDateFormatter()
formatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
let date = formatter.dateFromString(dateString)
我該如何在Swift(2.3)中實現?
在此先感謝。
你的代碼是正確的。如果你打印日期,你會得到UTC。在操場上試試吧。兩個註釋:'xxxx'可以替換爲'Z',並且在日期字符串中,加號/減號和時區值之間不能有空格字符。 – vadian
感謝您的回覆。是的,我知道它會給我一個UTC,但正如我上面寫的,我不想這樣。我想顯示服務器的日期時間,因爲我收到了。所以例如如果在服務器上是10:00(8:00 UTC),我還想在應用程序中顯示10:00(獨立於應用程序時區)。 – smq93
如果您想忽略時區,則必須從日期字符串中去除時區信息(例如,使用'replaceOccurrencesOfString'和'RegularExpression'選項)。 – vadian