嗨,我有一个项目,我必须告诉你从现在起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(¤tDate, &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?
答案 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 成员。