2014-03-31 61 views
-1

我的代碼,它創建了一個起始日期這些線路的基礎上,開始1秒周午夜後的第一個星期一:** **修訂轉換爲NSDate的使用dateFromString給出了不正確的結果

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd '00:00:01' a"]; // one second after midnight 
NSString *startDateString = [formatter stringFromDate:firstDayOfTheWeek]; 

[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss a"]; 
NSDate *nsdStart = [formatter dateFromString:startDateString]; 

startDateString是2014-03-31凌晨00:00:01(這是正確的)

nsdStart是2014年4月1日00:00:00 PDT(這是錯誤的!)

現在, 我有 做同樣的結束日期,使用此代碼:

[formatter setDateFormat:@"yyyy-MM-dd '23:59:59' a"]; // one second before midnight 
NSString *endDateString = [formatter stringFromDate:lastDayOfTheWeek]; // create end date string 

[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss a"]; 
NSDate *nsdEnd = [formatter dateFromString:endDateString]; // convert to NSDate 

現在的結果: endDateString:2014年4月6日下午23:59:59(這是正確的)

nsdEnd

爲什麼nsdStartnsdEnd不一樣的原始字符串日期s用於創建nsd日期?

+0

傾倒時,什麼是firstDayOfWeek'的'價值? –

+0

轉儲時nsdStart的值是多少? –

+0

firstDayOfTheWeek:2014-03-31 07:00:01 +0000(我在太平洋時區)。 nsdStart:2014-04-01 07:00:00 +0000(太平洋時區相同)。 – SpokaneDude

回答

2

這裏的問題是日期格式錯誤。

您應該使用'HH' 24小時時間格式,而不是hh,看起來像23小時其中max是12該格式混淆日期格式。

細節在這裏: Date Format Patterns

+0

使用你的建議HH,** nsdEnd **現在是:2014-04-06 12:59:59 PDT,這是更接近(日期現在正確,但時間仍然不正確)。 ** nsdStart **完全沒有改變。 (我已經知道這些模式了......不管怎麼說)。 – SpokaneDude

+2

不僅如此,在第一種情況下,格式不好的格式化程序必須困惑,因爲當它沒有讀取時間時試圖讀取AM/PM。而且它可能會在12點到11點59分之間運行12小時。 –

+0

謝謝你們......你們都是正確的......除去'a'解決了這個問題......現在一切都很好。謝謝你們這麼多...... SD – SpokaneDude

相關問題