如何使用DateFormatter创建具有Date类型的当前日期?

时间:2019-02-24 11:50:36

标签: ios swift date

我有这样的代码:

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

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

2 个答案:

答案 0 :(得分:2)

为什么不这样调用日历功能

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

旧解决方案

您需要更改函数以返回字符串(或在以后执行格式化)

func getCurrentDate() -> String {
    let formatter = DateFormatter()
    formatter.dateFormat = "dd.MM.yyyy”
    formatter.locale = Locale(identifier: "en_POSIX_US")

    return formatter.string(from: Date())
 }

答案 1 :(得分:2)

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

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

  

日期函数的返回日期格式为: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