如何从UIDatepicker中快速编辑用户的日期和时间选择器?

Posted

技术标签:

【中文标题】如何从UIDatepicker中快速编辑用户的日期和时间选择器?【英文标题】:How to edit Date and time picked by user from UIDate picker, in swift? 【发布时间】:2021-11-08 01:24:11 【问题描述】:

我正在尝试将本地通知安排在用户预约日期的上午 8 点。就像一个高级提醒,通知用户他们今天有约会。

我正在获取数据并将其转换为日期组件以安排通知。

读取用户选择的数据和编辑时间到早上 8 点的方法是什么?

【问题讨论】:

要清楚......你想让 UIDatePicker 只显示小时数? 对不起,如果我不清楚。在我的应用程序中,用户将选择通知的日期和时间。我想在所选日期的早上特定时间额外发送另一个通知。 好吧,我会调查的。 好的,所以您希望用户选择一个日期和时间。那么您想将用户所选日期的时间强制为特定时间(例如上午 8 点)? 是的,你是对的 【参考方案1】:

为此,获取用户选择的日期,并使用日历功能

date(bySettingHour:minute:second:of:matchingPolicy:repeatedTimePolicy:direction:)

因此,如果您有用户在日期选择器中选择的日期 userDate,请使用

guard let eightAM = Calendar.current.date(
      bySettingHour: 8, 
      minute: 0, 
      second: 0, 
      of: userDate) else 
    fatalError("Can't set time of user-entered date. Exiting.")

(这个函数应该永远不会失败,所以我使用了一个保护让和一个对fatalError()的调用来编写代码。)

【讨论】:

试试这个:) 嗨,非常感谢,我得到了我想要的。您的代码段有效,但稍作调整。为任何正在寻找相同内容的人发布此内容 让 date = Calendar.current.date(bySettingHour: 08, minute: 0, second: 0, of: Date())!守卫让八上午 = Calendar.current.date( bySettingHour: 08, minute: 0, second: 0, of:reminderDate) else fatalError("Can't set time of user-entered date. Exiting.") let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second,], from:reminderDate) let trigger1 = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false) 您应该编辑您的问题以显示您的代码,或发布您自己的答案。评论完全没有格式,几乎无法阅读。

以上是关于如何从UIDatepicker中快速编辑用户的日期和时间选择器?的主要内容,如果未能解决你的问题,请参考以下文章

从特定时间限制 UIDatePicker 日期。例如输入 DOB 到有限制的年龄限制

如何在 UIDatePicker 中禁用未来的日期、月份和年份?

在 iOS 14 中以编程方式打开 UIDatePicker

iOS Swift 3 - UIDatePicker

检测用户何时点击 UIDatePicker 中的选择指示器?

从 UIDatePicker 获取日期(没有时间)