从当前日期开始休息一定天,然后以特定日期格式打印

时间:2017-07-12 22:40:00

标签: swift date datetime nsdateformatter

我如何在当前日期之前花费一定天数(带走一天)并以特定日期格式打印到控制台。

我目前正在使用:

print((Calendar.current as NSCalendar).date(byAdding: .day, value: -1, to: Date(), options: [])!)

将日期和时间打印为:

   yyyy-MM-dd HH:MM:SS +0000

但我希望它打印如下:

  

DD-MM-YYYY

这一切都可能吗?

3 个答案:

答案 0 :(得分:2)

最好将其分解为更容易阅读/维护的几行。首先,计算所需的日期,然后应用日期格式化程序。

let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: Date())
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"

print(dateFormatter.stringFromDate(yesterday))

答案 1 :(得分:1)

swift 3.0版

let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: Date())
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
if let yesterday = yesterday {
    print(dateFormatter.string(from: yesterday))
}else{
    print("Date incorrectly manipulated")
}

答案 2 :(得分:0)

您不应该为Date格式字符串使用固定格式。因为您可能有来自世界各地的用户,他们也不会以相同的方式查看日期。

相反,你应该使用模板格式。您只需指定要显示的组件及其顺序,如:

let dateFormatter = DateFormatter()
// dateFormatter.locale = Locale(identifier: "bn-BD") // Enable this line only at the time of your debugging/testing
dateFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "ddMMyyyy",
                                                options: 0,
                                                locale: dateFormatter.locale)

let date = Calendar.current.date(byAdding: .day, value: -1, to: Date())
if let date = date {
    let dateString = dateFormatter.string(from: date)
    print(dateString)
}
  

您不应该自己设置locale。它完成了   框架。您应该只在当时手动设置locale   测试你的应用程序。

在上面的示例中,我使用Locale作为"bn-BD",这意味着孟加拉国的孟加拉国。您可以找到区域设置列表here