我有 as NSDatePicker
,我在哪里输入 0023,我希望它将它更改为2023
。我的逻辑是基于 +-50 年转换yy
为。yyyy
但是默认行为将NSDatePicker
其更改为0023
等。
我需要做什么才能yyyy
以最近 50 年范围的格式显示。
有没有办法通过 Interface Builder 或通过代码来做到这一点。
您的帮助将是非常可观的。
我有 as NSDatePicker
,我在哪里输入 0023,我希望它将它更改为2023
。我的逻辑是基于 +-50 年转换yy
为。yyyy
但是默认行为将NSDatePicker
其更改为0023
等。
我需要做什么才能yyyy
以最近 50 年范围的格式显示。
有没有办法通过 Interface Builder 或通过代码来做到这一点。
您的帮助将是非常可观的。
它不会“更改”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 常量。
但最好在数字被解释为年份之前捕获错误的年份数字,否则日期可能无效。