日期为yy-yyyy格式的NSDatePicker



我有一个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常量。

但最好在之前找到错误的年份号,因为否则日期可能无效。

相关内容

  • 没有找到相关文章