将NSDate转换为NSstring问题

时间:2014-10-03 13:42:21

标签: ios nsdate nsdateformatter nsdatepicker

您好我从 UIDatePicker 中选择日期并将其转换为NSstring ..所有日期都正常工作。您已将最长日期设为 2001-12-31 。当我选择这个日期时,字符串返回为 的" 2002-12-31"

dOBPicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(20, 30, 360, 55)];
dOBPicker.datePickerMode = UIDatePickerModeDate;


NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"YYYY-MM-dd";
dOBPicker.maximumDate = [formatter dateFromString:@"2001-12-31"];

此处转换

NSDateFormatter *dateOfBirthFormat =[[NSDateFormatter alloc]init];
dateOfBirthFormat.dateFormat = @"YYYY-MM-dd";

[dateOfBirthFormat setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *dob = [dateOfBirthFormat stringFromDate:dOBPicker.date];

NSLog(@"The dob is %@", dob);

输出为: 2002-12-31

2 个答案:

答案 0 :(得分:2)

你需要使用" yyyy"不是" YYYY"。

" Y":年份("周年和#34;基于日历)。通常,长度指定填充,但对于两个字母,它还指定最大长度。今年的指定用于ISO 8601定义的ISO年 - 周日历,但可用于需要周日处理的非基于格里高利的日历系统。可能并不总是与日历年相同的值。

Y   year of "Week of Year":  
    Y -> 1997

" y":年。通常,长度指定填充,但对于两个字母,它还指定最大长度。

y   year:   
    yy -> 96  
    y or yyyy -> 1996

请参阅:ICU Formatting Dates and Times
另外:CLDR Date Field SymbolTable.

答案 1 :(得分:1)

您需要将格式替换为:

@"yyyy-MM-dd"