我的时区中的字符串日期错误日期 [英] string to date in my timeZone make wrong date

查看:73
本文介绍了我的时区中的字符串日期错误日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to convert String to date in my country time zone but the result is not as formatted I did

   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

打印行日期正确但时间不正确.我需要这个时间到我的时间选择器

in print line date is correct but the time is incorrect. I need this time to my Timepicker

更新:

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

I have listener for time when I change the time set the value on textField

如下:

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

这就是我为改变价值所做的:

and this is what I do for changing 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 分钟

but the problem is when I change minute goes 30Min forward

推荐答案

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

Your are doing it in wrong way, You should set format on date picker not the date of date picker.

看看这段代码:

@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
}

这是你的意思吗?

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

I just uploaded a sample project, you can check it here: sample project

这篇关于我的时区中的字符串日期错误日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆