如何在日期选择器上设置特定时间?

Posted

技术标签:

【中文标题】如何在日期选择器上设置特定时间?【英文标题】:How to set specific time on date picker? 【发布时间】:2021-06-06 10:33:08 【问题描述】:

我正在使用日期选择器并选择 datePicker 模式作为时间。当我加载日期选择器时,它显示的是当前时间。但我想始终设置默认时间 5:00 PM。

我尝试了以下方法,但对我不起作用。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat =  "HH:mm"
dateFormatter.timeZone = .current

if let date = dateFormatter.date(from: "17:00") 
    datePicker.date = date

请帮助我始终默认为下午 5:00。谢谢。

【问题讨论】:

有什么问题?什么节目? 从了解/发现问题开始。 date 的值是多少?这是(在我的时区):2000-01-01 16:00:00 +0000,你看到年、月、日了吗?他们是你想到的那个吗?您是否希望获得 17h00,但在当天,在特定日期?然后,看看如何做到这一点。 【参考方案1】:

一种可能的解决方案是获取当前日期并相应地设置小时、分钟和秒

let fivePM = Calendar.current.date(bySettingHour: 17, minute: 0, second: 0, of: Date())!
datePicker.date = fivePM

另一种方法是设置countDownDuration属性

datePicker.countDownDuration = 61200 // 17 * 3600

【讨论】:

【参考方案2】:

另一个可能的答案是:

let cal = Calendar.current
let timeZone: TimeZone = .current

var dateComp = cal.dateComponents(in: timeZone, from: Date())
(dateComp.hour, dateComp.minute, dateComp.second, dateComp.nanosecond) = (17, 0, 0, 0)

let fivePM = cal.date(from: dateComp)
datePicker.date = fivePM

使用这种技术,您还可以获得另一个时区时间的下午 5 点。

请注意,在 Xcode 中调试时,Xcode 将在控制台中显示 GMT 时区的所有日期。

【讨论】:

以上是关于如何在日期选择器上设置特定时间?的主要内容,如果未能解决你的问题,请参考以下文章

在日期选择器上设置日期 jquery ui datepicker

验证对象名称以在日期选择器上设置 UILabel 文本名称

引导日期选择器上的棘手问题

如何在日期选择器上禁用所有星期天?

如何在我的日期选择器上启用未来年份?

如何在斑马日期选择器上调用我的 onchange 事件?