我們在使用Objective-c開發的現有iOS應用程序中收到了一個問題。RFC 3339日期格式化程序 - 爲什麼輸出日期偏移了一天?
問題:僅在PST時區內,輸出日期向後移動一天。
我們已經寫下如下代碼來將日期轉換爲短格式。
-(NSString *)getDisplayDateFormat:(NSString *)dateString
{
NSLocale *enUSPOSIXLocale;
NSDateFormatter *inputformatter = [[NSDateFormatter alloc] init];
enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[inputformatter setLocale:enUSPOSIXLocale];
inputformatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
[inputformatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssSSSZZZZ"];
NSDate *date= [inputformatter dateFromString:dateString];
NSDateFormatter *OutPutformatter = [[NSDateFormatter alloc] init];
[OutPutformatter setDateFormat:@"yyyy-MM-dd"];
NSString *dispalyDateString = [OutPutformatter stringFromDate:date];
return dispalyDateString;
}
輸入dateString = 2017-01-16T00:00:00-06:00
UTC格式:日期= 2017年1月16日六時○○分00秒0000
輸出dateString = 2017-01-15
請幫助我們解決問題。
這沒有錯。你所看到的是預期的。這不僅僅是PST(美國西海岸)。它將在1月15日顯示時區偏移大於-6(更西)的任何設備。 – rmaddy
2017-01-16T00:00:00-06:00(例如芝加哥1月16日午夜),是1月15日晚上10點在洛杉磯。所以你的輸出是有道理的。問題是你更廣泛的目標是什麼。你是說你不在乎什麼時候發生什麼事情,而只是在那裏的那一天?那麼你可能不應該在日期字符串中包含時間部分。退後一步,你應該編輯你的問題來描述更廣泛的設計目標,我們可以建議如何解決它。 – Rob
感謝您的澄清,我從服務器獲取日期「2017-01-16T00:00:00-06:00」,需要轉換爲2017-01-16。請建議。 – Raj