可能重复:
How do you calculate the day of the year for a specific date in Objective C
我需要获得一年中的当天数,并且不知道哪一个是最好的方法。
示例:
21-jan-2012 - > 21
2-feb-2012 - > 33
2012年3月2日 - > 62
2011年3月2日 - > 61
有什么想法吗?
由于
答案 0 :(得分:21)
我参加派对有点晚了但是无论如何,这里有:
NSDate *today = [NSDate date];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"DDD"];
NSInteger dayInYear = [[dateFormat stringFromDate:today] integerValue];
NSLog(@"today is %d. day in year", dayInYear);
14.jun.2012的结果:今天是166.一年一天
编辑:我很惊讶Google上没有易于查找的例子。
您还可以使用格式@"DD"
来获取每月的日期,或使用@"D"
来获取每周的日期。
EDIT2:请注意:创建NSDateFormatter
可能非常昂贵的操作。如果您的类经常使用此函数,则可能需要创建静态格式化程序ivar。
答案 1 :(得分:-1)
看看NSTimeInterval。您可以获得两个日期之间经过的秒数:
NSTimeInterval secondsElapsed = [secondDate timeIntervalSinceDate:firstDate];
所以你的firstDate可以是今年的开始。然后你可以除以3600 * 24(每天秒数)来获得日子。
答案 2 :(得分:-1)
查看以下解决方案您必须使用 timeIntervalSinceDate :为此
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date1 = [dateFormatter dateFromString:@"2012-01-01"];
NSDate *date2 = [NSDate date];
NSLog(@"date %@ ", date2);
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSDate *now = [[NSDate alloc] init];
NSString *theDate = [dateFormat stringFromDate:now];
NSDate *dt = [dateFormat dateFromString:theDate];
NSTimeInterval diffDays = [dt timeIntervalSinceDate:date1];
NSLog(@"Date %f ^^^^ ", diffDays/(24*60*60));
答案 3 :(得分:-3)
首先,您创建一个Dictionnary,如:
[Jan => 30,
Feb => 28,
...]
每月全天。