首页 > 解决方案 > 如何使用 DateFormatter 创建日期类型的当前日期?

问题描述

我有这样的代码:

func getCurrentDate() -> Date {
    let formatter = DateFormatter()
    formatter.dateStyle = DateFormatter.Style.medium
    formatter.timeStyle = DateFormatter.Style.none
    formatter.dateFormat = "dd.MM.yyyy"
    formatter.timeZone = TimeZone(identifier: "GMT")

    //I want for currentDate would be a Date type
    let currentDate = formatter... /// how to convert to date type?
    return currentDate
}

如何返回格式化的当前日期?日期函数返回日期格式为:2019-02-24 12:04:13 +0000。但我想以这种格式获取日期:24.02.2019。

我需要此代码的日期类型:

let differenceOfDate = Calendar.current.dateComponents(Set<Calendar.Component>([.day]),
                                                                  from: getDateFromString(foodDate: getCurrentDateString()),
                                                                  to: foodShelfLife).day

在该代码中,我得到字符串日期并将其转换为日期类型!我想在 1 函数中获取日期类型。

标签: iosswiftdate

解决方案


如果我没记错的话,这里有误会。

日期与如何显示它(格式)无关。提到:

日期函数返回日期格式为:2019-02-24 12:04:13 +0000。

是打印的结果Date()

print(Date())

如果您想将其视为“24.02.2019”,则应编辑其格式,因此getCurrentDate应返回一个字符串:

func getCurrentDate() -> String {
    let formatter = DateFormatter()
    formatter.dateStyle = DateFormatter.Style.medium
    formatter.timeStyle = DateFormatter.Style.none
    formatter.dateFormat = "dd.MM.yyyy"
    formatter.timeZone = TimeZone(identifier: "GMT")

    let currentDate = formatter.string(from: Date())
    return currentDate
}

所以:

print(getCurrentDate())

应该给你的结果24.02.2019


更新:

如果您的目标是使用dateComponents,您应该处理日期而不关心它们的格式。例子:

let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: Date())!
let components = Calendar.current.dateComponents(Set<Calendar.Component>([.day]), from: yesterday, to: Date())
print(components) // day: 1 isLeapMonth: false

推荐阅读