如何使用Swift 4.0获取简短的本地日期/时间格式?

时间:2019-05-02 06:30:13

标签: swift xcode

我正在尝试使用以下代码(swift 4.0,Xcode 10.2)打印日期(例如生日):

    let formatter = DateFormatter()
    formatter.timeStyle = .short
    formatter.dateStyle = .short
    formatter.locale = Locale(identifier: "en_US")
    formatter.dateFormat = "yyyy/MM/dd HH:mm"
    let DOB = formatter.date(from: "2019/05/01 22:30")

我得到打印(DOB)时,“ 2019-05-02 05:30:00 +0000”

似乎没有一个本地.short设置会影响结果。

怎么了。我如何简单地打印:“ 2019/05/01 22:30”?

2 个答案:

答案 0 :(得分:0)

您当前正在做的是将字符串转换为DateDate不包含有关其显示方式的信息。它们以相同的方式打印:2019-05-02 05:30:00 +0000。

字符串具有格式,因此您应该使用日期格式化程序将刚得到的Date转换回字符串。基本上,您有两种格式化程序:一种用于将字符串转换为日期,另一种用于将日期转换回字符串

let stringToDateformatter = DateFormatter()
stringToDateformatter.dateFormat = "yyyy/MM/dd HH:mm"
let DOB = stringToDateformatter.date(from: "2019/05/01 22:30")

let dateToStringFormatter = DateFormatter()
dateToStringFormatter.timeStyle = .short
dateToStringFormatter.dateStyle = .short
dateToStringFormatter.locale = Locale(identifier: "en_US")
let DOBString = dateToStringFormatter.string(from: DOB!)
print(DOBString) // 5/1/19, 10:30 PM

答案 1 :(得分:-1)

    let formatter = DateFormatter()
    formatter.timeStyle = .short
    formatter.dateStyle = .short
    formatter.locale = Locale(identifier: "en_US")
    formatter.dateFormat = "yyyy/MM/dd HH:mm"
    let DOB = formatter.date(from: "2019/05/01 22:30")

    formatter.dateFormat = "yyyy/MM/dd HH:mm"
let createdDate = formatter.string(from: DOB!)