簡體   English   中英

iPhone-計算任何日期的星期幾

[英]iPhone - Calculating the Day of Week of any date

我有一個代表日期的NSDate變量“ aDate”,例如,2011年8月28日,星期日。我在NSDate變量上有此日期。 該日期可以是任何日期,但是當該日是星期天時會出現問題。

我想獲取代表星期幾的三個字母的字符串。 在這種情況下,SUN。

然后我有這段代碼:

NSDateFormatter* theDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[theDateFormatter setDateFormat:@"EEE"];  
[theDateFormatter setLocale:currentLocale]; // I have tried to comment this out... no change

NSString *dayOfWeek =  [theDateFormatter stringFromDate:aDate];

我得到的結果是MON。 星期一?

如果添加以下代碼,精神錯亂就會變得更加瘋狂:

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *comps = [gregorian components:NSWeekdayCalendarUnit fromDate:myDate];
int weekday = [comps weekday];

然后工作日為2(MONDAY ??????)WTF? 確認問題。

我所處的語言環境從理論上講,星期一是一周的第一天。 因此,與我的時區無關,任何日期只有一周的一天。 如果要計算1978年1月1日是星期幾,則不需要定義任何時區。

如何在iPhone上做到這一點?

謝謝。

NSData被稱為基准日期“ GMT 2001年1月1日的第一時刻”,它只是該基准日期以來的秒數。

根據定義,日期是位置敏感的,因為我寫這封信給我在英國的朋友已經是明天了。

星期幾對日歷敏感。

因此,需要指定時區和日歷。 就我而言,默認情況下它們似乎是正確的,但最好明確指定。

因此,設置時區:

- (void)setTimeZone:(NSTimeZone *)tz

您的時區是? 您有一天放假的可能,因為您所在的時區與GST完全不同,因此您表示的時間是第二天或前一天。

我發現有必要將日期指定為本地時區以避免這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM