【问题标题】:Swift 3 changing date formatSwift 3 更改日期格式
【发布时间】:2017-05-25 11:18:11
【问题描述】:

我想在 DD.MM.YYYY HH:mm:ss 中获取我的日期作为字符串。

我使用以下扩展名:

extension Date {
var localTime: String {
    return description(with: Locale.current)
    }
}

当我的 datePicker 发生变化时,下面的代码:

@IBAction func datePickerChanged(_ sender: UIDatePicker) {
    dateLabel.text = datePicker.date.localTime
    let formatter = DateFormatter()
    formatter.dateFormat = "dd.MM.yyyy hh:mm"
    let TestDateTime = formatter.date(from: datePicker.date.localTime)
}

我做错了什么?

【问题讨论】:

    标签: ios swift date datepicker nsdateformatter


    【解决方案1】:

    您的代码完全错误。只需执行以下操作:

    @IBAction func datePickerChanged(_ sender: UIDatePicker) {
        let formatter = DateFormatter()
        formatter.dateFormat = "dd.MM.yyyy HH:mm"
    
        dateLabel.text = formatter.string(from: sender.date)
    }
    

    这会将日期选择器选择的日期转换为本地时间格式为 dd.MM.yyyy HH:mm 的字符串。

    切勿使用description 方法将任何对象转换为用户提供的值。

    【讨论】:

    • 正是我想要的。我很抱歉我用错误的代码提出草率的问题,非常感谢您帮助疲惫的开发人员!
    • @rmaddy 在哪里可以找到所有这些“dd.MM.yyyy HH:mm”?
    • @AnirudhaMahale 请参阅DateFormatter dateFormat 的文档。
    【解决方案2】:

    刚刚在你的代码中使用了这个函数(swift 4.2)。

    public func convertDateFormatter(date: String) -> String {
    
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"//this your string date format
    dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
    dateFormatter.locale = Locale(identifier: "your_loc_id")
    let convertedDate = dateFormatter.date(from: date)
    
    guard dateFormatter.date(from: date) != nil else {
    assert(false, "no date from string")
    return ""
    }
    dateFormatter.dateFormat = "HH:mm a"///this is what you want to convert format
    dateFormatter.timeZone = NSTimeZone(name: "UTC") as TimeZone!
    let timeStamp = dateFormatter.string(from: convertedDate!)
    print(timeStamp)
    return timeStamp
    }
    

    谢谢

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 2011-06-05
      • 2016-11-22
      相关资源
      最近更新 更多