尝试从日期中提取年份值时获取null

时间:2013-04-27 00:06:15

标签: ios nsdate nsdateformatter

我的代码如下:

NSString *dateString = @"1339007317";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
NSDate *date = [dateFormatter dateFromString:dateString];
NSString *year = [dateFormatter stringFromDate:date];
NSLog(@"%@",year);//null

如何解决这个问题?感谢名单。

2 个答案:

答案 0 :(得分:1)

这是因为您使用的是 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" or@"dd/MM/yyyyy" according to your requirement
[dateFormatter1 setLocale:locale];
[dateFormatter1 setTimeZone:[NSTimeZone systemTimeZone]];

dateStr = [dateFormatter1 stringFromDate: date];

希望它对你有所帮助。

答案 1 :(得分:0)

您需要两种日期格式。第一个应该匹配您要转换为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);