swift - 我的时区中的日期字符串使日期错误

标签 swift time nsdateformatter formatter

我正在尝试将字符串转换为我所在国家/地区时区的日期,但结果与我所做的格式不同

   let dbl = TimeInterval(longDate)

    let date = Date(timeIntervalSince1970: dbl / 1000)

    let formatter = DateFormatter()
    print(longDate)

    formatter.calendar = Calendar(identifier: .persian)
    formatter.locale = Locale(identifier: "fa_IR")
    formatter.timeZone = TimeZone(identifier: "IRST")

    formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
  let a = formatter.string(from: date)
 resultDate = dateFormatter.date(from: a)
 print(reslutDate,a) //2018-08-02 11:56:28 +0000 incorrect time 1397-05-11 15:56:28 correct time

打印行日期正确但时间不正确。我需要这个时间到我的 Timepicker

更新:

当我更改时间时,我有时间监听器在 textField 上设置值

如下所示:

   self.timePickerFrom.addTarget(self, action: #selector(self.dateChangedFrom(_:)), for: .valueChanged).  // the listener

这就是我为改变值(value)所做的事情:

let date = self.timePickerFrom.date
    print(date)
    let components = Calendar.current.dateComponents([.hour, .minute], from: date)
    let hour = components.hour!
    let minute = components.minute!

        self.timeOfloadingLable.text = "\(hour):\(minute)"

但问题是当我改变分钟向前 30 分钟

最佳答案

你做错了,你应该在日期选择器上设置格式而不是日期选择器的date

看这段代码:

@IBOutlet weak var epoch: UITextField!
@IBOutlet weak var dateTimePicker: UIDatePicker!

@IBAction func presentDate(_ sender: UIButton) {
    guard let text = epoch.text else {return}
    guard let epoch = Double(text) else {return}
    guard let date = convertDate(epoch: epoch) else {return}

    dateTimePicker.date = date
    dateTimePicker.timeZone = TimeZone(identifier: "IRST")
    dateTimePicker.locale = Locale(identifier: "fa_IR")
    dateTimePicker.calendar = Calendar(identifier: Calendar.Identifier.persian)
}

private func convertDate(epoch: Double) -> Date? {
    let date = Date(timeIntervalSince1970: epoch)
    return date
}

sample

是这个意思吗?

我刚刚上传了一个示例项目,您可以在这里查看:sample project

关于swift - 我的时区中的日期字符串使日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51653088/

相关文章:

swift - 从当前日期减去一定天数并以特定日期格式打印

swift - 您可以在不使用自定义 dateFormat 的情况下覆盖 NSDateFormatter 12 与 24 小时时间格式吗

iphone - 使用 NSDateComponents 时如何不丢失 '0' 数字。(iphone)

ios - SwiftUI 中 NavigationView 中后退按钮的默认文本

ios - 无法将类型 () 的值转换为预期的参数类型 bool (Swift)?

r - 自 R 中分组数据的最后一个事件以来的时间

time - 如何检查现在时间是否介于 AutoIt 中的给定时间之间

Swift - 在 map 中存储值。结构与类中的不同行为

swift - 在 Swift 中展开可选值

PHP 在当前日期时间上加一小时