You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS中如何为UIDatePicker设置默认今日日期与指定默认时间?

解决UIDatePicker默认显示今日日期+指定时间的问题

这个需求很常见,我来给你一步步搞定~核心思路就是手动构建一个包含今日日期和你指定时间的Date对象,然后把它赋值给UIDatePicker的date属性就行。下面是具体的实现步骤和代码:

实现思路拆解

  • 先获取系统日历对象,用来拆分、组合日期和时间组件
  • 提取今日的年、月、日信息,保证日期是当天
  • 自定义你需要的时间(比如上午9点、下午2点半这类)
  • 把日期和时间组件合并成一个新的目标Date
  • 最后把这个目标Date赋值给UIDatePicker

Objective-C 代码示例

// 初始化UIDatePicker,注意直接设置正确的模式即可,不用重复赋值
_datePicker = [[UIDatePicker alloc] initWithFrame:CGRectZero];
_datePicker.datePickerMode = UIDatePickerModeDateAndTime;

// 获取当前日历实例
NSCalendar *calendar = [NSCalendar currentCalendar];
// 提取今日的年、月、日组件
NSDateComponents *todayDateComponents = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:[NSDate date]];

// 设置你需要的指定时间,这里示例为9点0分0秒,可按需修改
NSDateComponents *targetTimeComponents = [[NSDateComponents alloc] init];
targetTimeComponents.hour = 9;
targetTimeComponents.minute = 0;
targetTimeComponents.second = 0;

// 合并日期和时间组件,生成最终的目标日期
todayDateComponents.hour = targetTimeComponents.hour;
todayDateComponents.minute = targetTimeComponents.minute;
todayDateComponents.second = targetTimeComponents.second;
NSDate *targetDate = [calendar dateFromComponents:todayDateComponents];

// 给UIDatePicker设置目标日期,animated设为YES会有平滑过渡效果
[_datePicker setDate:targetDate animated:NO];

小补充

  • 如果需要设置日期时有动画过渡,把animated:NO改成animated:YES就行
  • 你可以随意调整targetTimeComponents里的hour、minute值,比如要设为16:45,就写hour=16minute=45
  • 你原代码里重复设置了datePickerMode,建议只保留一次_datePicker.datePickerMode = UIDatePickerModeDateAndTime;,避免冗余代码

内容的提问来源于stack exchange,提问作者isuru

火山引擎 最新活动