如何判断在一定时间内的日期是什么目标-C

时间:2014-01-28 15:58:49

标签: objective-c datetime

嗨,我有一个项目,我必须告诉你从现在起4,000,000秒内的日期是什么,除了一年之外,我还能让它工作。我在Xcode的命令行工具应用程序中这样做。

我正在使用的代码:

#include <stdio.h>
#include <time.h>

    int main(int argc, const char * argv[])
    {
        long currentDate = time(NULL) + 4000000;
        struct tm now;
        localtime_r(&currentDate, &now);
        int actualMonth = now.tm_mon + 1;
        printf("The date is %d:%d:%d:\n", now.tm_wday, actualMonth, now.tm_year);
    }

控制台中的结果:

日期是6:3:114: 程序以退出代码结束:0

为什么要记录114?

3 个答案:

答案 0 :(得分:1)

使用NSCalendar,NSDate和NSDateComponents。具体来说,您可以将NSCalendar方法-dateByAddingComponents:toDate:options:[NSDate date]一起使用(以获取当前日期)。

使用Foundation框架的日期和日历类,您不必担心日历计算的复杂性。你不必担心闰日或闰秒,或者一个月内有多少天,等等。有许多细微之处难以理解,而且基金会已经有一个经过良好测试的系统 - 如果您在Objective-C中工作,没有理由不使用它。

答案 1 :(得分:0)

您可以将timeInterval(等于秒)添加到当前日期,从而在将来创建日期:

NSDate *dateInFuture = [[NSDate date] dateByAddingTimeInterval:4000000];

此日期可以在日期字段中使用NSDateFormatter显示,也可以使用NSLog打印 NSLog(@"new date %@",dateInFuture);

答案 2 :(得分:0)

这是因为 struct tm 中的 tm_year 成员只记录了自1900年以来的年数。所以2014年是自1900年以来的114年 - 这是实际上工作正常。在打印日期之前,只需将1900添加到 tm_year 成员。