这是我的代码:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:1275822000000+0000];
//字符串是json解析字符串
NSString *formattedDateString = [dateFormatter stringFromDate:date];
NSLog(@"formattedDateString: %@", formattedDateString);
输出结果为Dec 20,5828963
但我要求的产量是2010年6月6日
如何更改我的代码以获得正确的输出?
如果你想从2010年6月6日的某个幻数中收到,请使用:
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:297475822];
由于某种原因,你的数字非常大,而且正如@wrock提到的那样它会增加1000万,所以为了获得正确的值你可以使用dateWithTimeIntervalSince1970并将其除以1000万
NSDate *date = [NSDate dateWithTimeIntervalSince1970:1275822000];
首先:您的时间戳看起来像一个Java时间戳,但它有一些额外的零(其中4个完全正确)。你必须将它转换为Unix时间戳,这是自Unix纪元以来的秒数(而不是Java,这是自Unix纪元以来的毫秒数)。
dateWithTimeIntervalSinceReferenceDate:
不接受Unix时间戳,但转换很容易:
double timestampFromService = 12758220000000000;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:
(timestampFromService*1.0e-7)];
以可读方式使用日期:
NSDate *myDate = [NSDate dateWithString:@"2010-06-06 00:00:00"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSString *formattedDateString = [dateFormatter stringFromDate:myDate];
NSLog(@"formattedDateString: %@", formattedDateString);