首页 > IOS中时间戳转换 stringFromDate返回值是null

IOS中时间戳转换 stringFromDate返回值是null

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:formatString];
NSLog(@"date------:%@",date);
NSString *dateString = [dateFormat stringFromDate:date];
NSLog(@"time: %@", dateString);

date打印出来是正常的 但是无法转换成对应的格式。
打印出来是下面的结果
2015-02-05 14:22:22.057 Puyun[2416:144800] date------:1421311500000
2015-02-05 14:22:22.057 Puyun[2416:144800] time: (null)

很奇怪。

我拷贝了一块代码到程序中
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyyMMddHHMMss"];
NSDate *datea = [formatter dateFromString:@"1283376197"];
NSLog(@"date1:%@",datea);
居然打印出
2015-02-05 15:47:48.619 Puyun[2952:183558] date1:(null)

是不是漏了什么东西 请帮忙啊


第一个问题

要看你的 date 是什么格式的。[dateFormat stringFromDate:date];接受的是 NSDate 类型,可你的 date 肯定不是。如果是的话,打印出来就不会是1421311500000这样了。

看起来是个 long 类型的样子,所以第一步要先把它转成 NSDate。你可以参考上面 @avboy 的答案。

第二个问题

因为你定的格式是yyyyMMddHHMMss,而给的 String 又不符合这个格式,所以结果是 nil 了呀。
我把这一句改成:

NSDate *datea = [formatter dateFromString:@"20150206190300"];

就得出结果了:

2015-02-05 19:03:33.574 iOSTest[4411:76190] date1:2015-03-06 11:00:00 +0000

没有设置格式。可以使用 setDateFormat: 或者 setDateStyle: 方法设置,就不会返回 nil

[dateFormat setDateStyle:NSDateFormatterFullStyle];
//或者
[dateFormat setDateFormat:@"yyyy-mm-dd"];
NSString *dateString = [dateFormat stringFromDate:date];
NSLog(@"time: %@", dateString);

Unix 时间戳转 NSDate 可以这么写

long timesp = 1283376197; //Unix 时间戳 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timesp];

//转时间戳
NSDate *datea = [NSDate dateWithTimeIntervalSince1970:[@"1283376197" doubleValue]];

//转时间字符串
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd HH:MM:ss"];
NSDate *datea = [NSDate dateWithTimeIntervalSince1970:[@"1283376197" doubleValue]];
NSString *dateString = [formatter stringFromDate:datea];
NSLog(@"date1:%@",dateString);

【热门文章】
【热门文章】