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 № 1Jak 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 NSDate
jako 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")