如何使用dateformatter方法获取正确的日期?

问题描述 投票:2回答:3

这是我的代码:

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日

如何更改我的代码以获得正确的输出?

ios xcode4.2 nsdateformatter
3个回答
2
投票

如果你想从2010年6月6日的某个幻数中收到,请使用:

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:297475822];

由于某种原因,你的数字非常大,而且正如@wrock提到的那样它会增加1000万,所以为了获得正确的值你可以使用dateWithTimeIntervalSince1970并将其除以1000万

NSDate *date = [NSDate dateWithTimeIntervalSince1970:1275822000];

2
投票

首先:您的时间戳看起来像一个Java时间戳,但它有一些额外的零(其中4个完全正确)。你必须将它转换为Unix时间戳,这是自Unix纪元以来的秒数(而不是Java,这是自Unix纪元以来的毫秒数)。

dateWithTimeIntervalSinceReferenceDate:不接受Unix时间戳,但转换很容易:

double timestampFromService = 12758220000000000;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:
    (timestampFromService*1.0e-7)];

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);
© www.soinside.com 2019 - 2024. All rights reserved.