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)
是不是漏了什么东西 请帮忙啊
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
没有设置格式。可以使用
setDateFormat:或者setDateStyle:方法设置,就不会返回nil了Unix 时间戳转
NSDate可以这么写//转时间戳
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);
第一个问题
要看你的 date 是什么格式的。
[dateFormat stringFromDate:date];接受的是 NSDate 类型,可你的 date 肯定不是。如果是的话,打印出来就不会是1421311500000这样了。看起来是个 long 类型的样子,所以第一步要先把它转成 NSDate。你可以参考上面 @avboy 的答案。
第二个问题
因为你定的格式是
yyyyMMddHHMMss,而给的 String 又不符合这个格式,所以结果是 nil 了呀。我把这一句改成:
就得出结果了: