Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 尝试从日期提取年份值时获取null_Ios_Nsdate_Nsdateformatter - Fatal编程技术网

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

Ios 尝试从日期提取年份值时获取null,ios,nsdate,nsdateformatter,Ios,Nsdate,Nsdateformatter,我的代码如下: NSString *dateString = @"1339007317"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy"]; NSDate *date = [dateFormatter dateFromString:dateString]; NSString *year = [dateFormatter stringFro

我的代码如下:

NSString *dateString = @"1339007317";

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

如何解决这个问题?thanx.

您需要两种日期格式。第一个应与要转换为
NSDate
的字符串的格式匹配。第二种格式需要表示所需的格式。使用第二个将
NSDate
转换为新字符串

另外,为什么要创建一个日期对象,然后立即用新对象替换它

更改此项:

NSDate *date = [[NSDate alloc] init];
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);

这是因为您使用的是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];

希望能对您有所帮助。

您好,Thanx,但我已经尝试过在不分配的情况下自动分配日期值,但没有效果,您的第一个建议如何,您能否详细说明一下?您的字符串“133907317”是什么日期格式?不仅仅是一年,没有必要设定时区。它将默认为当前时区。另外,为什么要将区域设置设置为
en-US
(此外,它应该是
en\u-US
)?
//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];