【发布时间】:2017-11-02 13:46:26
【问题描述】:
您好,我试图根据我的后端响应将我的日期选择器值限制在特定时间段内。我参考了很多链接,但没有任何帮助,这是我的代码。
datePicker.datePickerMode = .time
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let today = dateFormatter.string(from: Date())
let preprTime = UserDefaults.standard.string(forKey: "PREPARATION_TIME")!
let start = UserDefaults.standard.string(forKey: "START_TIME")!
let end = UserDefaults.standard.string(forKey: "END_TIME")!
//Prints--> preprTime = 30 Mins., start = 08:00:00, end = 23:00:00
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss z"
let startDt = dateFormatter.date(from: "\(today) \(start) z")
let endDt = dateFormatter.date(from: "\(today) \(end) z")
//Prints--> startDt = 2017-11-02 08:00:00 +0000, endDt = 2017-11-02 23:00:00 +0000
let mins = preprTime.trimmingCharacters(in: CharacterSet(charactersIn: "01234567890").inverted)
let startTime: Date = startDt!.addingTimeInterval(TimeInterval(Int(mins)! * 60))
let endTime: Date = endDt!.addingTimeInterval(-(TimeInterval(Int(mins)! * 60)))
//Prints--> startTime = 2017-11-02 08:30:00 +0000, endTime = 2017-11-02 22:30:00 +0000
datePicker.minimumDate = startTime
datePicker.maximumDate = endTime
//Prints--> datePicker.minimumDate = 2017-11-02 08:30:00 +0000, datePicker.maximumDate = 2017-11-02 22:30:00 +0000
我想我差不多完成了,它打印了正确的值,但是 datePicker 的最小和最大日期设置不正确。这意味着 datePicker 的 minimumDate(time) 是今天 2.00 PM,maximumDate(time) 是今天 11.59 PM。我不知道我在哪里做错了,有人可以帮我触发这个...? 在此先感谢....!
【问题讨论】:
-
我认为,您面临区域设置问题,打印日期显示 +0000,它看起来像 UTC 时间,我的建议是在计算 startTime 和 endTime 之前将日期更改为当前区域设置。
-
@DipakKacha,你能分享任何示例代码
标签: ios swift datepicker