2

可能重复:
您如何计算目标 C 中特定日期的一年中的哪一天

我需要得到一年中的天数,不知道哪个是最好的方法。

例子:

2012 年 1 月 21 日 -> 21

2012 年 2 月 2 日 -> 33

2012 年 3 月 2 日 -> 62

2011 年 3 月 2 日 -> 61

有任何想法吗?

谢谢

4

4 回答 4

22

我参加聚会有点晚了,但无论如何,这里是:

 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。

于 2012-06-14T09:41:54.573 回答
-1

看看 NSTimeInterval。您可以获得两个日期之间经过的秒数:

NSTimeInterval secondsElapsed = [secondDate timeIntervalSinceDate:firstDate];

所以你的 firstDate 可以是年初。然后你可以除以 3600*24(每天的秒数)来得到天数。

于 2012-06-14T09:17:57.977 回答
-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));
于 2012-06-14T09:35:24.247 回答
-3

首先,您创建一个字典,例如:

[Jan => 30,
Feb =>  28,
 ...] 

每个月的所有日子。

  • 其次是您的日期,例如:2012 年 6 月 13 日。
  • 您将添加 6 月前一个月的所有值(在您的字典中一段时间​​)。
  • 最后加上一天(这里:13)。
于 2012-06-14T09:17:03.017 回答