2015-08-15 15 views
13

2015-08-14T20:02:25-04:00 dosyasını 2015-08-14 16:02
içine dönüştürmek istiyorum, fakat iyi çalışamam (nil).Zaman dilimi tarihini hızlıca nasıl değiştirebilirim?

let d = "2015-08-14T20:02:25-04:00" 
let formatter = NSDateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZZ" 
let date: NSDate? = formatter.dateFromString(d) 

Bu tarih biçimini nasıl değiştirebilirim?

+0

"NSDateFormatter" öğesinin doğrudan bir yolu olup olmadığından emin değilim, ancak dizeyi (yani, tarih, saat, TZ'ye bölünmüş) ayrıştırabilir ve "NSDateFormatter" içine koymak için uygun bir dize oluşturabilirsiniz. –

cevap

24

Xcode 8 • Swift 3

let dateString = "2015-08-14T20:02:25-04:00" 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxxx" 
if let dateFromString = formatter.date(from: dateString) { 
    formatter.dateFormat = "yyyy-MM-dd HH:mm" 
    let stringFromDate = formatter.string(from: dateFromString) 
} 
'u' kaçıp için "xxxxx" kullanmak gerekir

"-04: 00":

let dateString = "2015-08-14T20:02:25-04:00" 
let formatter = NSDateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxxx" 
if let dateFromString = formatter.dateFromString(dateString) { 
    formatter.dateFormat = "yyyy-MM-dd HH:mm" 
    let stringFromDate = formatter.stringFromDate(dateFromString) 
} 

Eğer Bunu kullanabileceğiniz bazı referanslara ihtiyacınız var:

enter image description here

+0

Yapabilirim. teşekkür ederim! – naohide

+0

@naohide Hoşgeldiniz –

+0

'+05: 00' için xxx kullanıyorsam çalışmıyor. – Vakas

2
let date: String = "2015-08-14T20:02:25-04:00" 
let fcBackendDateFormat = "yyyy-MM-dd'T'HH:mm:ss-ss:ss" 

let formatter = NSDateFormatter() 
formatter.dateFormat = fcBackendDateFormat 
println(formatter.dateFromString(date)) // "Optional(2015-08-14 18:02:00 +0000)" 

tarih UTC olarak ve anlamı -2 saat benim saat dilimine göre yorumlanır olarak 2 saat geçtikten zaman çıkarılır görebileceğiniz gibi.

+0

Bu cevabın iki tane nasıl olduğunu merak ediyorum. SADECE SADECE saniye içindir. Saat dilimini tarih dizesinden ayrıştırmak için tarih biçiminde kullanamazsınız. Bu sorunun ikinci sayısında, önündeki clueless eksi işareti var. Üçüncüsü, tarih biçimlendirici yerel ayarını "en_US_POSIX" olarak ayarlamazsanız, cihaz saat formatı, cihaz yerel ayarları tarafından otomatik olarak 24 saat yerine 12 saat olarak ayarlandığından veya kullanıcının manuel olarak ayarlanması nedeniyle kodunuz çökebilir. –

1

Sen kullanabilirsiniz:

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZ" 

Umut bu yardım edeceğim!

İlgili konular