[英]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.