【问题标题】:is there a way to set an array of dates all to the same Hour?有没有办法将日期数组设置为同一小时?
【发布时间】:2020-06-24 21:19:55
【问题描述】:

我有一个从日期选择器创建的日期数组。当它们被保存时,它还会添加小时和分钟。当我比较日期是否相等时,由于夏令时,其中一些日期会休息一个小时。

有没有办法在日期选择器之后将每个日期设置为同一小时,或者我是否必须通过检查夏令时并添加或减去一个小时的过程?或者我应该通过一个函数运行数组以使它们都相等?

func createDatePicker() {

    // format Display of date
    datePicker.datePickerMode = .date

    // assign datepicker to textfield
    dateTextField.inputView = datePicker

    // create toolbar
    let toolBar = UIToolbar()
    toolBar.sizeToFit()

    // add item Button
    let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector (doneClicked))
    toolBar.setItems([doneButton], animated: true)


    dateTextField.inputAccessoryView = toolBar

}

@objc func doneClicked() {

    //format the date display in text field
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .short
    dateFormatter.dateFormat = "MM-dd-yyyy"
    dateTextField.text = dateFormatter.string(from: datePicker.date)

    self.view.endEditing(true)

【问题讨论】:

    标签: swift date datepicker nsdateformatter nsdatecomponents


    【解决方案1】:

    找到了解决办法。

    if let date = dateTextField.text {
         let dateFormatter = DateFormatter()
         dateFormatter.dateFormat = "MM-dd-yyyy"
         newDate = dateFormatter.date(from: date)!
         let tz = TimeZone.current
         if tz.isDaylightSavingTime(for: newDate) {
         print("date Changed")
         newDate += 3600
    

    【讨论】:

    • 如果您只需要检查两个日期是否在同一天,您可以使用日历方法func isDate(_ date1: Date, inSameDayAs date2: Date) -> Bool
    猜你喜欢
    • 2021-02-19
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多