繁体   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