我在格式为“2017-03-14”(yyyy-MM-dd) 的字符串中有一个日期,我正在尝试将其转换为格式为“2017 年 3 月 14 日,星期二”的字符串。
这是我的代码:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from: "2017-03-14")
现在如果我打印“date”的值,我得到这个:
2017-03-13 22:00:00 +0000
这只是前一天。这是为什么?
编辑:
我需要在格式化之前比较日期。
var newDateString : String = ""
let date2 = Date()
let comp = date2.compare(date!)
if comp.rawValue == 0 {
newDateString = "TONIGHT"
} else {
dateFormatter.dateFormat = "EEEE, MMMM d, yyyy"
newDateString = dateFormatter.string(from: date!)
}
谢谢
最佳答案
所需的格式应该是:
EEEE, MMMM dd, yyyy
您所要做的就是在您的代码之后添加以下代码片段:
dateFormatter.dateFormat = "EEEE, MMMM dd, yyyy"
let string = dateFormatter.string(from: date!) // "Tuesday, March 14, 2017"
备注:
我想建议做可选绑定(bind)来声明date
,如下:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let date = dateFormatter.date(from: "2017-03-14") {
dateFormatter.dateFormat = "EEEE, MMMM dd, yyyy"
let string = dateFormatter.string(from: date) // "Tuesday, March 14, 2017"
}
关于swift - 将字符串转换为返回前一天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42786812/