我有这样的代码:
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个函数中获取日期类型。
答案 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