【问题标题】:Time coming wrongly but Date is correct in swift时间来错了,但日期很快就正确了
【发布时间】:2020-08-25 10:11:27
【问题描述】:

我从 datepicker 获取文本字段中的日期.. 在文本字段中获取正确的日期和时间,但从 dateFormatter 时间不正确,但日期完美

这是我的代码

 let dateFormatter = DateFormatter()
  dateFormatter.dateFormat = "MM/dd/yy, hh:mm a"
  let dateFormate = dateFormatter.date(from: dateLabel.text!)
    
    print("out put \(dateLabel.text!)")//log out put 8/25/20, 3:40 PM
    print("out put  \(dateFormate)")  // out put  Optional(2020-08-25 10:08:00 +0000)

我得到正确的日期但错误的时间为什么?

在 20 年 8 月 25 日下午 3:40 注销 //textfield o/p

输出 Optional(2020-08-25 10:08:00 +0000) // dateFormate o/p

我哪里错了,请帮我写代码。

【问题讨论】:

  • 这可能与时区有关。打印 Date 对象总是打印 UTC 时间。 dateLabel中日期字符串的时区是什么?
  • 这里有什么问题,如上所述,这只是日期的打印方式,但您对这个日期对象的最终用途是什么?
  • @JoakimDanielson .. 如果我给出时区 .. 然后像 (2020-08-25 17:32:00 +0000) 这样 o/p 但我需要像 8/25/20, 5:32 PM 这样我需要 12 小时的甲酸.. 怎么做
  • 输出只是日期的文本表示,在 Date 对象中没有 12 或 24 小时格式。鉴于您之前的问题以及这个问题,您确实需要了解 Date 对象和日期的文本表示之间的区别。只有后者有格式。因此,请再次阅读 Date 对象是什么,以便正确理解它。

标签: swift time dateformatter


【解决方案1】:

根据您的要求,您首先需要创建一个DateFormatter 来将您从dateLabel 获取的日期字符串解析为Date 对象:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "M/d/yy, h:m a"
dateFormatter.locale = Locale(identifier: "in") // here place your locale identifier
let date = dateFormatter.date(from: dateLabel.text!)

然后是一个新的DateFormatter 将您的 Date 对象转换为您想要打印的格式。例如:

let outputDateFormatter = DateFormatter()
outputDateFormatter.dateFormat = "M-d-yyyy, h:m a"
outputDateFormatter.locale = Locale(identifier: "in")
print(outputDateFormatter.string(from: date!))

【讨论】:

    【解决方案2】:
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MM/dd/yy, hh:mm a"
    let date = dateFormatter.date(from: (dateLabel.text!))
    print(dateFormatter.string(from: date!))
    

    【讨论】:

    • 如果我这样付出.. 在 24 小时甲酸中获得时间我需要 12 小时甲酸.. o/p 我得到out put Optional(2020-08-25 17:32:00 +0000) 我需要像输出8/25/20, 5:32 PM
    • @iOSApp 打印 Date 对象始终以 UTC 时区和特定格式显示日期。要返回原始日期字符串,您必须使用相同的DateFormatter 打印日期对象。所以如果上面的代码解析没问题,你只需要把print(date!)替换成print(dateFormatter.string(from: date!))
    • @gcharita 不是因为我的时区应该是 12 小时制......请在这里帮助我
    • @gcharita.. 时间应该到下午 5:32
    • @iOSApp 您从dateLabel 获得的日期字符串的时区是什么?
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2019-11-11
    相关资源
    最近更新 更多