我有一个NSDatePicker
,其中我输入0023,我希望它将其更改为2023
。我的逻辑是基于+-50年将yy
转换为yyyy
。
但NSDatePicker
的默认行为将其更改为0023
等
我需要做的是以最近50年的yyyy
格式显示。
有没有任何方法可以通过接口生成器或代码来实现。
你的帮助将是非常可观的。
它不会将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常量。
但最好在之前找到错误的年份号,因为否则日期可能无效。