Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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 2000年以下日期时间错误_Ios_Objective C_Nsdateformatter - Fatal编程技术网

Ios 2000年以下日期时间错误

Ios 2000年以下日期时间错误,ios,objective-c,nsdateformatter,Ios,Objective C,Nsdateformatter,我在设置生日日期2000年1月1日时遇到了格式问题,触摸按钮在文本字段1999年1月1日完成了设置。我在设备上设置的区域是丹麦。 这是我的密码: NSDateFormatter *dateFormatterForDisplay = [[NSDateFormatter alloc] init]; dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; dateFormatter.ti

我在设置生日日期2000年1月1日时遇到了格式问题,触摸按钮在文本字段1999年1月1日完成了设置。我在设备上设置的区域是丹麦。 这是我的密码:

 NSDateFormatter *dateFormatterForDisplay = [[NSDateFormatter alloc] init];
 dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
 dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
 [dateFormatterForDisplay setDateFormat:@"MMMM dd, YYYY"];
 self.birthdayPicker.date = birthday;
 _birthday = birthday;
 self.birthdayTxt.text = [dateFormatterForDisplay stringFromDate:_birthday];

有人帮我解决这个bug,帮我节省了很多时间。谢谢。

不要设置此选项:

dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
尝试使用:

      [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:NSLocaleIdentifier]];

它将从设备设置您的本地时区

更改您的日期格式年是yyyy不是yyyy

 NSDateFormatter *dateFormatterForDisplay = [[NSDateFormatter alloc] init];
dateFormatterForDisplay.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
dateFormatterForDisplay.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatterForDisplay setDateFormat:@"d MMM yyyy"]; // customize the format
NSDate *setCurrentDate = [dateFormatterForDisplay dateFromString:@"1 jan 2000"];

NSLog(@"date ==%@", [dateFormatterForDisplay stringFromDate:setCurrentDate]);
输出为

更新的答案

NSDateFormatter *dateFormatterForDisplay = [[NSDateFormatter alloc] init];
dateFormatterForDisplay.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
dateFormatterForDisplay.timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatterForDisplay setDateFormat:@"d MMM yyyy"];
NSDate *setCurrentDate = [dateFormatterForDisplay dateFromString:@"1 jan 2000"];
 [dateFormatterForDisplay setDateFormat:@"MMM dd, yyyy"]; // if you want this use like MMMM dd, yyyy
NSLog(@"date ==%@", [dateFormatterForDisplay stringFromDate:setCurrentDate]);
输出


年的日期格式是
yyyy
而不是
yyy
,因此您的日期格式应该是
MMMM-dd,yyyy
yyyy是基于周的日历。对于实际日历,请使用yyyy。请尝试将其更改为yyyy,但它仍然有效error@CuongNguyen-你期望的输入和输出是什么-我期望像1月1日一样,2000@CuongNguyen它与订单无关,但您不应使用
YYYY
而是
yyy
,因此您使用
MMMM-dd,YYYY
@Anbu.Karthik这里是输入“po_Birthy 2000-01-01 00:00:00+0000”。我将设备的区域设置为丹麦。文本字段return januar 01,1999_Birthy是nsdate,nsdate始终为不规则格式,如果要访问正确的数据,请使用此[dateFormatter setLocale:[[NSLocale alloc]initWithLocaleIdentifier:NSLocaleIdentifier]];这不是时区的问题。什么时区会将日期偏移一整年?只是OP的日期格式有问题。