如何在Cocoa中以不同的精度建模日期为年,月/年或日/月/年?

时间:2014-05-06 22:19:19

标签: objective-c macos cocoa date

我想让用户有可能以不同的精度输入日期:

  • 仅限年份或
  • 作为月份或年份或
  • 日,月,年。

在Cocoa中执行此操作的最佳方法是什么(并将其存储在Core Data中) 如何验证NSTextField中的输入(NSTextField是最佳选项)? 如何以相同的方式根据搜索字段条目搜索相应的项目?

1 个答案:

答案 0 :(得分:0)

NSDate将始终包含年,月,日和时间。您可以使用以下代码返回具有指定值的日期:

- (NSDate *)dateWithYear:(NSInteger)year Month:(NSInteger)month Day:(NSInteger)day {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [[NSDateComponents alloc] init];
    components.year = year;
    components.month = month;
    components.day = day;
    return [calendar dateFromComponents:components];
}

如果要更改日期的显示,可以使用NSDateFormatter:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"]; // shows only year
[dateFormatter setDateFormat:@"MMM yyyy"]; //shows month & year

使用格式化程序将日期转换为字符串:

NSString *dateString = [formatter stringFromDate:date];

在此处详细了解日期格式:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html