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