这是我的代码:
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日
如何更改我的代码以获得正确的输出?
答案 0 :(得分:2)
如果你想从2010年6月6日收到某个幻数,请使用:
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:297475822];
出于某种原因,你的数字非常大,正如@wrock提到的那样,它会增加1000万,所以为了获得正确的价值你可以使用dateWithTimeIntervalSince1970并将它除以1000万
NSDate *date = [NSDate dateWithTimeIntervalSince1970:1275822000];
答案 1 :(得分:2)
首先:您的时间戳看起来像一个Java时间戳,但它有一些额外的零(其中4个完全正确)。你必须将它转换为Unix时间戳,这是自Unix纪元以来的秒数(而不是Java,这是自Unix纪元以来的毫秒数)。
dateWithTimeIntervalSinceReferenceDate:
不接受Unix时间戳,但转换很简单:
double timestampFromService = 12758220000000000;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:
(timestampFromService*1.0e-7)];
答案 2 :(得分:0)
以可读的方式使用日期:
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);