2015-11-06 134 views
-3

這是一個非常常見的問題,但我可能是獨一無二的,因爲我的秒數有很長的小數位。轉換:NSString到NSDate

NSString *timestamp = @"2015-11-06 15:27:34.0000000"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss zzz"]; 
NSDate *capturedStartDate = [dateFormatter dateFromString: timestamp]; 

我的capturedStartDate爲空。

對於日期格式,我試着用Z,a替換zzz,然後完全刪除它。我也嘗試過和沒有'T'。有人知道正確的格式從字符串中檢索這個日期嗎?

+0

'[dateFormatter setDateFormat:@「yyyy-MM-dd HH:mm:ss.SSS」];'我不認爲有什麼意義可以捕獲更多的小數點。下次考慮閱讀文檔:http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns – matt

+0

@matt我沒有從iOS應用捕獲這個日期,從數據庫接收它。這只是我必須處理的格式,因爲這是它被存儲的方式。我同意,毫秒毫無意義。 –

+0

我的觀點是,超過三位小數,NSDate不會區分。它沒有那種精確度。因此,'「.SSS」'是你需要的所有S。 – matt

回答

1

你的日期字符串沒有時區,所以你應該刪除那個Z。此外,你也有一小部分時間。日期字符串中沒有T。所以你想

yyyy-MM-dd HH:mm:ss.SSSSSS 

這確實乞討的問題,該字符串表示什麼時區。如果是UTC,則需要相應地設置格式化程序的時區。

同樣,您可能要小心使用非公曆日曆的用戶。有關將locale設置爲en_US_POSIX的信息,請參見Apple Technical Q&A 1480

+0

多數民衆贊成它,我也不得不刪除''T''如果我不刪除它然後日期將返回null –

+0

同意。 'T'也應該被刪除。 – Rob