gpt4 book ai didi

ios - 具有 5 分钟间隔的 UIDatePicker 以间隔显示日期

转载 作者:可可西里 更新时间:2023-11-01 01:25:51 25 4
gpt4 key购买 nike

我花了大约 3 个小时试图让 UIDatePicker 做我想做的事。我将其设置为 UITextField 的一个操作,以使用 UIDatePicker 连接到新的 View Controller 。这一切都在起作用。我已经能够选择一个日期并将其发送回原始 View Controller 。

问题是我使用的是 5 分钟的时间间隔。如果我不移动日期选择器 “轮子” 并选择我的完成按钮返回父 Controller ,则返回非间隔时间。所以当我需要 11:40 时,11:37 返回 11:37。但是,如果我更改 “wheels”,它会返回经过舍入的时间。日期选择器当前显示 5 分钟的间隔。有什么线索可以引导我找到正确的解决方案吗?我在 viewDidAppear 上的 UIDatePicker 上尝试了 setDateminuteInterval 无济于事。下面是我一直在使用的代码:

protocol DatePickerDelegate {
func datePickerDidSelect(selectedDate: String)
}

class DatePickerVC: UIViewController {

@IBOutlet weak var pickerView: UIDatePicker!

var selectedDate = ""
var delegate : DatePickerDelegate?


override func viewDidLoad() {
super.viewDidLoad()
}

override func viewDidAppear(_ animated: Bool) {
//setDate()
//Have tried using setDate and minuteInterval here
}

func formatDate() -> DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM d, yyyy h:mm a"
return dateFormatter
}

func setDate() {
let dateFormatter = formatDate()
selectedDate = dateFormatter.string(from: pickerView.date)
self.delegate?.datePickerDidSelect(selectedDate: selectedDate)
print(selectedDate)
}

@IBAction func datePickerChanged(_ sender: Any) {
setDate()
}

@IBAction func doneBtnPressed(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}

@IBAction func cancelBtnPressed(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}
}

最佳答案

您可以像这样检查日期并将其四舍五入到您的需要:

override func viewDidLoad() {
super.viewDidLoad()

let calendar = Calendar.current
var dateComponents = calendar.dateComponents([.month, .day, .year, .hour, .minute], from: datePicker.date)
guard var hour = dateComponents.hour, var minute = dateComponents.minute else {
print("something went wrong")
return
}

let intervalRemainder = minute % datePicker.minuteInterval
if intervalRemainder > 0 {
// need to correct the date
minute += datePicker.minuteInterval - intervalRemainder
if minute >= 60 {
hour += 1
minute -= 60
}

// update datecomponents
dateComponents.hour = hour
dateComponents.minute = minute

// get the corrected date
guard let roundedDate = calendar.date(from: dateComponents) else {
print("something went wrong")
return
}

// update the datepicker
datePicker.date = roundedDate
}
}

有什么不明白的地方欢迎提问!

关于ios - 具有 5 分钟间隔的 UIDatePicker 以间隔显示日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41536519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com