NSDateFormatter将不适用于1970年之前的日期?

时间:2012-07-03 05:05:45

标签: ios nsdateformatter

double seconds = -62167464057.000;
NSDate *oldDate = [NSDate dateWithTimeIntervalSince1970:seconds];
MELog("oldDate = %@", oldDate);//oldDate = 0002-12-29 03:59:03 +0000

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init]  autorelease];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];

NSString *formattedDateString = [dateFormatter stringFromDate:oldDate];
NSLog(@"formattedDateString = %@", formattedDateString);//formattedDateString = 3:57 AM

在上面的代码中,日期组件的时间是3:59,但是当我们将其格式化为提取时间字段时,我们得到3:57

我的时区是伦敦,所以它应该返回3:59

这是因为我们试图在1970年之前格式化日期吗?请确认是否有人知道。

2 个答案:

答案 0 :(得分:0)

是的,这正是原因所在。这是因为"开始"时间戳:

Unix time, the number of seconds since 00:00:00 UTC on January 1, 1970

更多on wikipedia

答案 1 :(得分:-5)

在您的代码中,您将设置为1970年的时间间隔。可能由于这种情况而无法使用,并且由URSELF设定最短的日期。