日期格式化程序没有为使用相同日期格式化程序生成的日期字符串重新调整正确的日期

问题描述

我正在使用日期格式化程序将时间戳转换为日期字符串,并使用相同的格式化程序从日期字符串中获取日期。从时间戳到日期字符串的转换工作正常。但是当从日期字符串创建日期时,我得到了同样的错误日期。

    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 (将#修改为@)