Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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 NSDateFormatter dateFromString返回的年份错误_Ios_Nsdate_Nsdateformatter - Fatal编程技术网

Ios NSDateFormatter dateFromString返回的年份错误

Ios NSDateFormatter dateFromString返回的年份错误,ios,nsdate,nsdateformatter,Ios,Nsdate,Nsdateformatter,我有以下这些片段 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat : @"yyyy/MM/dd"]; NSString *timeStr = @"2015/05/16"; NSDate *timeDate = [formatter dateFromString:timeStr]; 但当我在控制台中打印timeDate时,输出是werid。年份变为4003 4003-05-

我有以下这些片段

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat : @"yyyy/MM/dd"];
NSString *timeStr = @"2015/05/16";
NSDate *timeDate = [formatter dateFromString:timeStr];
但当我在控制台中打印timeDate时,输出是werid。年份变为4003

4003-05-16 16:00:00 +0000
我在iPad8.3(12F69)(不是模拟器)上测试它。系统时区是北京。
非常感谢您的帮助。

问题在于格式化程序的
区域设置。如果您想使用公历而不考虑设备设置,通常应将区域设置设置为
en_US\u POSIX

formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];

看看苹果。这是针对RFC 3339/ISO 8601日期的,但它确实适用于任何您尝试使用标准日历转换日期字符串以用于内部目的的地方(即,与在UI中显示给最终用户的日期相反,这些日期通常应使用设备的区域设置)。

试试这个。。。只需在打印输出时添加最后一行

NSString *timeStr = @"2015/05/16";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
NSDate *Date = [formatter dateFromString:timeStr];
NSLog(@"Date =%@", [formatter stringFromDate:Date]);

请检查我的答案…对不起,我想要一个正确的NSDate实例,而不仅仅是打印一些东西。无论如何,谢谢你检查我的答案。谢谢你回答我的问题,但我检查了另一个答案。很抱歉