swift - 将字符串转换为返回前一天的日期

标签 swift nsdate nsdateformatter

我在格式为“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/

相关文章:

swift - MKPointAnnotation 添加按钮

swift - 模式变量绑定(bind)不能出现在表达式中

IOS如何设置日期格式

ios - 查询解析大于今天的日期

swift - 如何深度合并 2 个 Swift 词典

swift - 如何从不可变的非类值中获取 Swift UnsafePointer?

ios - 使用键对对象数组进行排序,键是字典

swift - NSCalendarUnitDay 将当前日期显示为一位整数 int。如何将其变为 2 位数字,例如 "03"?

ios - 时间格式包含冒号(:) Not supported by iOS 12. 2

ios - 德国区域格式与美国的日期解析行为不同