Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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/22.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返回完全错误的值_Ios_Objective C_Nsdate_Nsdateformatter - Fatal编程技术网

Ios NSDateFormatter返回完全错误的值

Ios NSDateFormatter返回完全错误的值,ios,objective-c,nsdate,nsdateformatter,Ios,Objective C,Nsdate,Nsdateformatter,if(组件!=kDayComponent) { NSInteger i_d=[\u日期选择器selectedRowInComponent:kDayComponent], i_m=[[u datePicker selectedRowInComponent:kMonthComponent], i_y=[[u datePicker selectedRowInComponent:kYearComponent]; NSString*d=_天[i_d]; //NSString*m=[[u月[i\m]长度]=

if(组件!=kDayComponent)
{
NSInteger i_d=[\u日期选择器selectedRowInComponent:kDayComponent],
i_m=[[u datePicker selectedRowInComponent:kMonthComponent],
i_y=[[u datePicker selectedRowInComponent:kYearComponent];
NSString*d=_天[i_d];
//NSString*m=[[u月[i\m]长度]==1?[NSString stringWithFormat:@“0%@”,“u月[i\m]]:[u月[i\m];
NSString*m=i_m+1<10?[NSString stringWithFormat:@“0%d”,i_m+1]:[NSString stringWithFormat:@“%d”,i_m+1];
NSInteger y=[[u年[i_y]积分值];
NSString*completeDate=[NSString stringWithFormat:@“%@/%@/%ld”,d,m,(长)y];
NSDateFormatter*dateFormatter=[NSDateFormatter new];
[dateFormatter setCalendar:[NSCalendar AutoUpdate CurrentCalendar]];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[日期格式化程序setDateFormat:@“DD/MM/YYYY”];
NSDate*refreshDate=[dateFormatter dateFromString:completeDate];
//NSDate*refreshDate=[self dateFromMonth:m.integerValue+1
//年份:y
//andDay:d.整数值+1];
NSLog(@“refreshDate:%@”,refreshDate.description);
[self-refreshDaysFromDate:refreshDate];
}
如您所见,
completeDate
具有正确的字符串日期值,我正在尝试使用
NSDateFormatter
对其进行格式化,并将该值保存在
refreshDate
中。
问题是
refreshDate
返回了完全错误的值,即使我设置了
NSTimeZone
NSCalendar

将日期格式化程序YYYY修改为YYYY也可以得到准确的值

if (component != kDayComponent)
    {
        NSInteger i_d = [_datePicker selectedRowInComponent:kDayComponent],
        i_m = [_datePicker selectedRowInComponent:kMonthComponent],
        i_y = [_datePicker selectedRowInComponent:kYearComponent];

        NSString *d = _days[i_d];
//        NSString *m = [_months[i_m] length] == 1 ? [NSString stringWithFormat:@"0%@", _months[i_m]] : _months[i_m];
        NSString *m = i_m+1 < 10 ? [NSString stringWithFormat:@"0%d", i_m+1] : [NSString stringWithFormat:@"%d", i_m+1];
        NSInteger y = [_years[i_y] integerValue];
        NSString *completeDate = [NSString stringWithFormat:@"%@/%@/%ld", d, m, (long)y];

        NSDateFormatter *dateFormatter = [NSDateFormatter new];
        [dateFormatter setCalendar:[NSCalendar autoupdatingCurrentCalendar]];
        [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
        [dateFormatter setDateFormat:@"DD/MM/YYYY"];

        NSDate *refreshDate = [dateFormatter dateFromString:completeDate];

//        NSDate *refreshDate = [self dateFromMonth:m.integerValue+1
//                                          andYear:y
//                                           andDay:d.integerValue+1];
        NSLog(@"refreshDate: %@", refreshDate.description);

        [self refreshDaysFromDate:refreshDate];
    }
yyyy指定日历年,而yyy指定ISO年-周日历中使用的年份(年中的一周)。

在大多数情况下,yyyyyyy产生相同的数字,但它们可能不同。通常,您应该使用日历年

仅修改日期格式化程序

[dateFormatter setDateFormat:@"dd/MM/yyyy"];
这是我的工作。

你需要的是“yyyy”而不是“yyyy”和“dd”而不是“dd”

y=年份
Y=“一年中的一周”的年份

另外(热舔):
d=月份中的天
D=一年中的某一天


请参见:

另外,请参见您忘了指出“dd”的重要性。“DD”是指一年中的某一天,而不是某一天。它可以工作,在运行时我看到结果是正常的,但它仍然打印出描述仍然错误。DD是一个月中的某一天,DD是一年中的某一天。是的@HotLicks“DD”是指一年中的某一天,而不是某一天。但是我忘记了post的回答。thanqConsult出色的文档:
dd/MM/yyyy