【发布时间】:2012-12-01 08:58:30
【问题描述】:
我需要从 NSDate 中获取星期几作为数字。
例如,如果今天是星期四,我应该得到 4 号,如果是星期五,那么我应该得到 5 号。
此功能是否已经存在?
【问题讨论】:
-
根据您的要求,星期四->4,星期一->1。我已经发布了答案,请检查并更新我。
标签: objective-c cocoa cocoa-touch date nsdate
我需要从 NSDate 中获取星期几作为数字。
例如,如果今天是星期四,我应该得到 4 号,如果是星期五,那么我应该得到 5 号。
此功能是否已经存在?
【问题讨论】:
标签: objective-c cocoa cocoa-touch date nsdate
用途:
NSCalendar * calendar = [NSCalendar currentCalendar];
[calendar components:NSWeekdayCalendarUnit fromDate:date];
int weekday = [weekdayComponents weekday];
但请注意,使用此代码时,1 是星期日。
【讨论】:
像这样使用NSCalendar:
NSCalendar *calObject = [NSCalendar currentCalendar];
NSDateComponents *comp = [calObject components:NSWeekdayCalendarUnit
fromDate:yourDateHere]; //provide date here
NSInteger day = [comp weekday]; //will return 1 = Sunday, 2 = Monday, etc.
【讨论】:
根据您的要求,以下代码为您提供今天的“4”,即 2012 年 12 月 13 日星期四
NSMutableDictionary *weeks=[NSMutableDictionary new];
[weeks setObject:@"1" forKey:@"Monday"];
[weeks setObject:@"2" forKey:@"Tuesday"];
[weeks setObject:@"3" forKey:@"Wednesday"];
[weeks setObject:@"4" forKey:@"Thursday"];
[weeks setObject:@"5" forKey:@"Friday"];
[weeks setObject:@"6" forKey:@"Saturday"];
[weeks setObject:@"7" forKey:@"Sunday"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE"];
NSLog(@"%@",[weeks objectForKey:[dateFormatter stringFromDate:[NSDate date]]]);//gives you 4 for today i.e. Thursday 13 Dec 2012
或
有点棘手
NSCalendar *calender = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [calender components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
NSInteger dayCount = [dateComponents weekday]-1;
if (dayCount==0) {//as sunday will become 0, you need 7.
dayCount=7;
}
NSLog(@"Day count : %ld",dayCount);
【讨论】: