我有NSDatePicker
,我输入0023,我希望将其更改为2023
。我的逻辑是基于+ - 50年将yy
转换为yyyy
。
但NSDatePicker
的默认行为会将其更改为0023
等。
我需要做的是以最近50年的yyyy
格式显示。
有没有办法通过Interface Builder或代码来实现。
你的帮助将非常明显。
答案 0 :(得分:0)
它不会将0023
“更改为”0023
,而是在0023
处,这是正确的行为。您需要自己手动检查并修复此问题。也许喜欢(未经测试):
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar
components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit
fromDate:myPossiblyIncorrectDate
];
NSDate *correctedDate;
if ([components year] < 100) {
NSUInteger currentYearLastDigits = 13; // Insert logic to get current year here.
NSUInteger yearLastDigits = [components year];
if (yearLastDigits > currentYearLastDigits) {
[components setYear:1900 + yearLastDigits];
} else {
[components setYear:2000 + yearLastDigits];
}
correctedDate = [calendar dateFromComponents:components];
} else {
correctedDate = myPossiblyIncorrectDate;
}
根据您需要的确切程度,您可能希望获得/设置更多组件。请参阅NSCalendar constants。
但最好在之前找到错误的年份数,否则该数字甚至会被解释为年数,否则日期可能无效。