iOS如何获得一年中的天数?

时间:2012-06-14 09:12:17

标签: ios numbers nsdate days leap-year

  

可能重复:
  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

有什么想法吗?

由于

4 个答案:

答案 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,
 ...] 

每月全天。

  • 其次是你的日期:2012年6月13日。
  • 您将在6月之前添加月份的所有值(在您的词典上添加一段时间)。
  • 完成添加日期(此处:13)。