【发布时间】:2020-05-27 18:27:23
【问题描述】:
我试图将日期从一种格式转换为另一种格式。但是下面代码中的 date 为 nil。你们能帮我看看下面是代码吗。
func eventTimeDate() -> Date {
let dtf = DateFormatter()
dtf.timeZone = TimeZone.current
dtf.dateFormat = "yyyy-MM-dd HH:mm:ss z"
/// "2020-05-28 00:20:00 GMT+5:30"
let stringDate = dtf.string(from: self)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/MM/dd HH:mm:ss z"
/// nil
let date = dateFormatter.date(from: stringDate)
return date!
}
【问题讨论】:
-
这毫无意义,因为
Date没有格式。您可能希望从 string 开始,将其转换为日期,然后再转换回字符串(具有不同的格式)。 -
日期为零,因为您的
stringDate与您期望的实际格式的格式不匹配(期望使用/,但您给它一个带有-的字符串)。但你实际上在做什么?日期是日期 - 它是一个对象。当您需要转换它时,您可以对其应用任何格式。说日期对象本身有格式是没有意义的 -
@MartinR 对我的要求是将日期从一种格式化程序转换为不同格式的日期。我不想返回字符串格式
-
A
Date是时间的绝对值(内部表示为自 2000 年 1 月 1 日以来的秒数。Date没有格式。 -
其他人都已经说过了,但是 Date 没有格式。当你把它转换成一个字符串时,有一个格式。