Mac开发_ NSDatePicker

发布时间 2023-03-25 11:16:51作者: CH520

1、创建

  • 1.1 创建与样式

// 创建
NSDatePicker *date_picker = [[NSDatePicker alloc] init];
// 添加
[self.window.contentView addSubview:date_picker];
// 设置位置尺寸
date_picker.frame = NSMakeRect(20, 30, 200, 200);
// 表示日期选择器的样式
date_picker.datePickerStyle = NSDatePickerStyleTextField;
// 表示日期选择器是否有边框。
date_picker.bezeled = YES;
// 表示日期选择器是否有边框。
date_picker.bordered = NO;
// 表示日期选择器是否绘制背景。
date_picker.drawsBackground = YES;
// 表示日期选择器的背景颜色。
date_picker.backgroundColor = [NSColor redColor];
// 表示日期选择器中文本的颜色。
date_picker.textColor = [NSColor blueColor];
// 表示日期选择器的模式
date_picker.datePickerMode = NSDatePickerModeSingle;
// 表示日期选择器中显示哪些元素
date_picker.datePickerElements = NSDatePickerElementFlagHourMinuteSecond;

  • 1.2 修改显示内容

// 指定NSDatePicker所使用的日历类型
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
date_picker.calendar = calendar;

// 用于指定日期选择器的区域设置。它可以影响日期格式、周起始日、月份名称等。
// 设置区域为中国
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"];
date_picker.locale = locale;

// 指定日期选择器所使用的时区。
// 默认情况下,NSDatePicker会使用本地时区。但是,如果你想在不同的时区之间进行转换,你可以设置timeZone属性。
// NSDatePicker在显示日期和时间时使用太平洋时间而不是本地时间。
NSTimeZone *time_zone = [NSTimeZone timeZoneWithName:@"America/Los_Angeles"];
date_picker.timeZone = time_zone;

// 获取或设置当前选中的日期和时间。
date_picker.dateValue = [NSDate date];
// 表示日期选择器中时间间隔的值。
date_picker.timeInterval = 156253;

// 设置日期格式为“年-月-日”
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
// 表示日期选择器中可选日期的最小值。
date_picker.minDate = [formatter dateFromString:@"2023-01-01"];
// 表示日期选择器中可选日期的最大值。
date_picker.maxDate = [formatter dateFromString:@"2023-12-31"];
// 表示日期选择器是否在日历上叠加显示。
date_picker.presentsCalendarOverlay = YES;
  • 1.3 代理

// 表示日期选择器的代理,用于处理用户交互和其他事件。
date_picker.delegate = self;

/**
 * @brief 用于验证用户选择的日期和时间是否有效。当用户更改日期选择器中的值时,该方法将被调用。
 * 该方法的主要目的是确保用户选择的日期和时间在指定的最小和最大日期范围内,并且符合任何其他自定义验证规则。
 * 如果用户选择的日期和时间无效,该方法应该更改proposedDateValue指针指向的值,以便更新日期选择器中的值。
 
 如果需要,该方法也可以更改proposedTimeInterval指针指向的值,以便更新日期选择器中的时间间隔。否则,可以将该参数保留为nil。
 *
 * @param aDatePickerCell    用户更改日期选择器时调用该方法的日期选择器单元格对象。
 * @param proposedDateValue 一个指向NSDate对象的指针,表示用户选择的日期和时间。该方法将更改该指针指向的值,以便更新日期选择器中的值。
 * @param proposedTimeInterval   一个可选的NSTimeInterval类型的指针,表示用户选择的时间间隔。如果用户选择了一个时间间隔,该参数将包含该间隔的值。否则,该参数将为nil。
 */
- (void)datePickerCell:(NSDatePickerCell *)aDatePickerCell
validateProposedDateValue:(NSDate * __nonnull *__nonnull)proposedDateValue
          timeInterval:(nullable NSTimeInterval *)proposedTimeInterval {
    
//    NSLog(@"proposedDateValue %@",*proposedDateValue);
//    NSDate *date = *proposedDateValue;
//    NSDate *newDate = [date dateByAddingTimeInterval:200000];
//
//    self.datePicker.dateValue = newDate;//*(proposedTimeInterval);
}
  • 1.4 几种显示样式

2、其他