试图从一个日期
问题描述:
我的代码中提取年份值时,遇到了空如下:试图从一个日期
NSString *dateString = @"1339007317";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
NSDate *date = [dateFormatter dateFromString:dateString];
NSString *year = [dateFormatter stringFromDate:date];
NSLog(@"%@",year);//null
如何解决呢?感谢名单。
答
这是因为你正在使用unix时间戳和你可以转换unix时间戳到年或任何日期格式为:
//Posted Date Format
NSString *dateStr = @"1339007317";
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[dateStr doubleValue]];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"];
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy"]; //Here you can set any date format Ex:@"dd MMM, yyyy hh:mm a" [email protected]"dd/MM/yyyyy" according to your requirement
[dateFormatter1 setLocale:locale];
[dateFormatter1 setTimeZone:[NSTimeZone systemTimeZone]];
dateStr = [dateFormatter1 stringFromDate: date];
希望它可以帮助你。
答
您需要两种日期格式。首先应该匹配你想转换为NSDate
的字符串格式。第二种格式需要表示您想要的格式。使用2nd将NSDate
转换为新字符串。
另外,为什么你创建一个日期对象,然后立即用新的替换它?
更改此:
NSDate *date = [[NSDate alloc] init];
date = [dateFormatter dateFromString:dateString];
到:
NSDate *date = [dateFormatter dateFromString:dateString];
你的代码需要是这样的:
NSString *dateString = @"1339007317";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"???"]; // format that matches the dateString
NSDate *date = [dateFormatter dateFromString:dateString];
[dateFormatter setDateFormat:@"yyyy"]; // the desired new format
NSString *year = [dateFormatter stringFromDate:date];
NSLog(@"%@",year);
无需设置时区。它将默认为当前时区。另外,为什么将locale设置为'en-US'(除了 - 它应该是'en_US')? – rmaddy 2013-04-27 04:13:34