/ / NSDate ustaw strefę czasową w swift - swift, nsdate

NSDate ustawił strefę czasową w swift - swift, nsdate

jak mogę zwrócić NSDate we wcześniej zdefiniowanej strefie czasowej z ciągu znaków

let responseString = "2015-8-17 GMT+05:30"
var dFormatter = NSDateFormatter()
dFormatter.dateFormat = "yyyy-M-dd ZZZZ"
var serverTime = dFormatter.dateFromString(responseString)
println("NSDate : (serverTime!)")

powyższy kod zwraca czas jako

2015-08-16 18:30:00 +0000

Odpowiedzi:

6 dla odpowiedzi № 1

Jak mogę zwrócić NSDate we wstępnie zdefiniowanej strefie czasowej?

Nie możesz.

Wystąpienie NSDate nie zawiera żadnych informacji o strefie czasowej ani kalendarzu. Po prostu identyfikuje jeden punkt w czasie uniwersalnym.

Możesz to zinterpretować NSDate obiekt w dowolnym kalendarzu. W interpolacji ciągów Swift (ostatni wiersz przykładowego kodu) użyto znaku NSDateFormatter który używa UTC (to jest „+0000” w danych wyjściowych).

Jeśli chcesz NSDatejako ciąg znaków w kalendarzu bieżącego użytkownika, musisz jawnie ustawić dla tego format daty.


29 dla odpowiedzi nr 2

Format daty należy zamiast tego przypisać do właściwości dateFormat formatera daty.

let date = NSDate.date()
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let str = dateFormatter.stringFromDate(date)
println(str)

Spowoduje to wydrukowanie daty przy użyciu domyślnej strefy czasowej w urządzeniu. Tylko jeśli chcesz, aby dane wyjściowe były zgodne z inną strefą czasową, możesz na przykład dodać

dateFormatter.timeZone = NSTimeZone(name: "UTC")

patrz również link http://www.brianjcoleman.com/tutorial-nsdate-in-swift/


0 dla odpowiedzi № 3

Swift 4.0

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