Swift 3转换中的日期

时间:2016-10-18 22:21:13

标签: ios swift date

我希望这个日期" 2016-10-18 22:06:20 + 0000"至" 18-10-2016",这可能吗?我设法得到如下日期:

var formatter = DateFormatter()
formatter.dateFormat = "yyy-MM-dd'HH:mm:ss.SSSZ"
let stringDate = formatter.string(from: currentDate)

以上给我" 10/18/16",但我怎样才能得到" 18-10-2016"?

3 个答案:

答案 0 :(得分:4)

你在问题​​中提出的内容很少有道理。您的日期不是2016-10-18 22:06:20 +0000。您发布的代码会将当前Date转换为字符串。但您声称希望该字符串采用18-10-2016格式,但您的代码使用完全不同的格式。

为什么不这样做:

var formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let stringDate = formatter.string(from: currentDate)

这会将currentDate转换为您在问题中提到的格式的字符串。

答案 1 :(得分:4)

Swift 3中的解决方案

extension Foundation.Date {

func dashedStringFromDate() -> String {
    let dateFormatter = DateFormatter()
    let date = self
    dateFormatter.dateFormat = "dd-MM-yyyy"
    return dateFormatter.string(from: date)
  }
}

实施例

let date = Foundation.Date()
let formatedDate = date.dashedStringFromDate()

答案 2 :(得分:4)

如果您确实有一个格式为2016-10-18 22:06:20 +0000的字符串,并且想要将其转换为18-10-2016,那么您需要两个日期格式化程序。

首先将原始字符串转换为日期:

let string = "2016-10-18 22:06:20 +0000"

let formatter1 = DateFormatter()
formatter1.locale = Locale(identifier: "en_US_POSIX") // if this string was from web service or a database, you should set the locale
formatter1.dateFormat = "yyyy-MM-dd HH:mm:ss Z"

guard let date = formatter1.date(from: string) else {
    fatalError("Couldn't parse original date string")
}

如果您希望以18-10-2016的格式构建新字符串,那么您将使用第二个格式化程序:

let formatter2 = DateFormatter()
formatter2.dateFormat = "dd-MM-yyyy"

let result = formatter2.string(from: date)