2011-08-14 30 views
1

我將如何能夠確定某個NSDate對象是否屬於某一天?由於所有日期均按照GMT時區計算,因此日期實際上可能在8日而不是9日。計算諸如日,月,星期幾等時間差時最好的方法是什麼?確定一個NSDate對象的日期組件(時區問題)

+0

我剛去的StackOverflow問這個問題了,然後我看到它在頭版... ! – gcamp

+0

你是什麼意思的時區帳戶?一個NSDate表示一個有限的時刻。請提供一個你想要做什麼以及潛在問題是什麼的例子。 – Moshe

回答

2

一個NSDate是一個絕對時間點。當你想知道它落在哪一天時,你必須考慮你的具體時區。既然你有NSCalendar得到NSDateComponents,您可以使用setTimeZone:在日曆上獲得的組件(月,日,小時等),您感興趣的時區。

如果您應對「日曆日期「(即應始終代表特定日期/月份的日期,而不是絕對時間點),則始終可以使用固定時區(例如GMT)來顯示日期。 NSDateFormatter(用於向用戶顯示日期)還具有timeZone屬性。

1

你需要用它來打破日起部分之前設置所需的時區中NSCalendar

NSCalendar* gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
[gregorian setTimeZone:[NSTimeZone localTimeZone]]; // or timeZoneWithName:@"GMT" etc. 

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
NSDateComponents* compsDate = [gregorian components:unitFlags fromDate:date]; 
// [compsDate year] [compsDate month] [compsDate day]