问题描述
我正在使用日期格式化程序将时间戳转换为日期字符串,并使用相同的格式化程序从日期字符串中获取日期。从时间戳到日期字符串的转换工作正常。但是当从日期字符串创建日期时,我得到了同样的错误日期。
func getDateFormatter() -> DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.timeZone = .current
dateFormatter.dateFormat = "dd MMM YYYY"
return dateFormatter
}
func getDate(from dateString: String) -> Date? {
print("Date String: ",dateString)
let dateFormatter = getDateFormatter()
return dateFormatter.date(from: dateString) ?? nil
}
func getDateString(from timestamp: Double) -> String {
let dateFormatter = getDateFormatter()
let date = Date(timeIntervalSince1970: timestamp)
let dateString = dateFormatter.string(from: date)
return dateString
}
func getDateStringForHeaderText(dateString: String) -> String {
guard let date = getDate(from: dateString) else {
print("Could not get date for generting header string")
return dateString
}
print("Date: ",date)
if Calendar.current.isDateInToday(date) { return "Today"}
if Calendar.current.isDateInYesterday(date) {return "Yesterday"}
return dateString
}
当为 2 个不同的日期字符串调用 getDateStringForHeaderText
时,我得到了相同的错误日期。
Date String: 14 Jan 2021
Date: 2020-12-19 18:30:00 +0000
Date String: 15 Jan 2021
Date: 2020-12-19 18:30:00 +0000
有些地方提到不要设置时区,因为默认使用 .current。用于生成这些日期的时间戳是使用 NSDate().timeIntervalSince1970
保存的。但我觉得自从我从日期字符串中切掉了时间部分,时区应该没什么关系。我错过了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)