【问题标题】:How to set a date pickers date from a date string in swift如何在swift中从日期字符串中设置日期选择器日期
【发布时间】:2015-01-02 13:04:29
【问题描述】:

从日期字符串中设置日期选择器日期的正确方法是什么

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd/MM/YY"
let convertedStartDate = dateFormatter.dateFromString("1/3/15")
startDatePicker.date = convertedStartDate!

这个不行,convertedStartDate = nil

【问题讨论】:

  • 我相信,如果您将日期格式字符串更改为“d/M/YY”,您的格式化程序就会工作。通过提供两个d's 和M's 你告诉它会有领先的0's 个位数的日期和月份。
  • 我试过了。没有运气。并且肯定不会在大多数日期工作
  • 好的。更简单的选择。使用dateFormatter.dateStyle = .ShortStyle。这在操场上对我有用。

标签: swift datepicker


【解决方案1】:

**你必须使用“yy”而不是“YY”

let formatter = DateFormatter()
formatter.dateFormat = "d/M/yy"
formatter.locale = Locale(identifier: "en_US_POSIX")
if let startDate = formatter.date(from: "1/3/15") {
    print(startDate)  // 2015-03-01 03:00:00 +0000
}

您还可以创建一个扩展程序来为您处理,如下所示:

extension String {
    func toDateFormatted(with string: String)-> Date? {
        let formatter = DateFormatter()
        formatter.dateFormat = "d/M/yy"
        formatter.locale = Locale(identifier: "en_US_POSIX")
        formatter.dateFormat = string
        return formatter.date(from: self)
    }
}
let string = "1/3/15"
if let date = string.toDateFormatted(with: "d/M/yy") {
     print(date)  // 2015-03-01 03:00:00 +0000
}  

如果您需要参考来帮助您格式化日期,可以使用下面的参考:

【讨论】:

  • 小写 y 很好理解!我在原来的阅读中完全错过了这一点。
  • 我一开始也没有看到。当我将它与我的扩展并排放置时,我才意识到这一点。
【解决方案2】:

Swift 3.0 版本

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "d/M/yy"
if let convertedStartDate = dateFormatter.date(from: "1/3/15") {
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多