'daki bir ISO-8601 dizesinden gelen ofset değerini ayıklamak NSDateFormatter
ile, bir ofset ile bir ISO-8601 tarih + saat değerini iletirse, ofseti okur ve çıkışı UTC değerine ayarlar. :Swift
// Setup
let formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
// Test
let input = "2016-04-16 04:12:00-0800"
let output = formatter.dateFromString(input)
let outputStr = formatter.stringFromDate(output)
print(outputStr) // "2016-04-15 08:12:00-0000"
Şimdiye kadar çok iyi.
Ama bu ofset değerine kendim ulaşmak istiyorum. Uygulamam, tarih-zaman ofset bilgilerini koruyan bir web servisine yönelik bir istemcidir, bu yüzden aynı şeyi yapmalıyım (körü körüne outputStr
'u web servisine geri döndürdüğüm gibi, ofset bilgisini kaybettim, böylece veritabanı ofsetin ne olduğunu bilmeyecek datetime toplandı zaman oldu.
NSDateFormatter
sadece tarihleri çıkış için saat dilimi bilgileri kabul görünüyor, bana sayısal bir giriş dizesi dışına ofset almak için bir yolu yoktur.
Örneğiniz, belirli bir tarih dizgesinden + zaman değeriyle ilgili zaman dilimi ofsetini nasıl alabildiğimi göstermez. – Dai
?? giriş dizginiz belirli bir zaman değerini temsil eder, AYNI DEĞERİ farklı zaman ofsetleri ile dizge olarak gösterilebilir. – user3441734
Sadece giriş dizesini 'ayrıştırmak ve ondan -0800 almak istiyor musunuz? ya da temsil ettiği zamana ihtiyacınız var mı? – user3441734