可能重复:
您如何计算目标 C 中特定日期的一年中的哪一天
我需要得到一年中的天数,不知道哪个是最好的方法。
例子:
2012 年 1 月 21 日 -> 21
2012 年 2 月 2 日 -> 33
2012 年 3 月 2 日 -> 62
2011 年 3 月 2 日 -> 61
有任何想法吗?
谢谢
我参加聚会有点晚了,但无论如何,这里是:
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);
2012 年 6 月 14 日的结果:今天是 166 天。
编辑:我很惊讶在谷歌上没有容易找到的例子。
您还可以使用格式@"DD"
来获取月中的一天或@"D"
一周中的一天。
EDIT2:请注意:创建NSDateFormatter
可能是非常昂贵的操作。如果你的类经常使用这个函数,你可能想要创建一个静态格式化程序 ivar。
看看 NSTimeInterval。您可以获得两个日期之间经过的秒数:
NSTimeInterval secondsElapsed = [secondDate timeIntervalSinceDate:firstDate];
所以你的 firstDate 可以是年初。然后你可以除以 3600*24(每天的秒数)来得到天数。
查看以下解决方案您必须使用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));
首先,您创建一个字典,例如:
[Jan => 30,
Feb => 28,
...]
每个月的所有日子。