使用具有不同日期格式的电话将字符串转换为日期

你放弃了

我在将字符串日期解析为日期格式时遇到一些麻烦。

我从一个API接收具有这种格式的日期字符串2020-08-27 12:39:32(日期以24小时格式),并且我有String的扩展名将其转换为Date。所以我做这样的转换:

apiTime.toDate(format: "yyyy-MM-dd HH:mm:ss")

如果电话配置为24小时,则一切正常。当应用程序以AM / PM日期格式运行时出现问题,因为日期返回nil。

这是我将String转换为Date的扩展。

extension String {
    func toDate(format: String) -> Date? {
        let dateFormatter = DateFormatter()
        dateFormatter.amSymbol = "AM"
        dateFormatter.pmSymbol = "PM"
        dateFormatter.dateFormat = format
        return dateFormatter.date(from: self) //here return nil with AM/PM format
    }
}
pawello2222

正如@LeoDabus所建议的那样,最好不要DateFormatter每次都创建(这非常消耗资源)。您可以提取它,例如。作为静态属性。

这是一个简单的演示:

class Test {
    static let dateFormatter: DateFormatter = {
        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
        return dateFormatter
    }()
    
    func parseDateExample() {
        let apiTime = "2020-08-27 12:39:32"
        if let date = apiTime.toDate(formatter: Self.dateFormatter, format: "yyyy-MM-dd HH:mm:ss") {
            print(date)
        } else {
            print("error")
        }
    }
}

您可以在String扩展名中重用格式化程序,而不必每次调用都创建一个新的格式化程序toDate

extension String {
    func toDate(formatter: DateFormatter, format: String) -> Date? {
        formatter.dateFormat = format
        return formatter.date(from: self)
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将日期转换为具有不同日期格式的ios的字符串?

有没有办法将具有不同日期格式的日期 varchar 字符串转换为 MySQL 日期格式?

将字符串转换为日期以提供不同的格式

将字符串转换为不同的日期时间格式

如何从具有不同日期格式字符串的列中提取年份

将字符串日期转换为不同格式的字符串日期

将日期值(字符串)转换为具有不同时区的时间戳

将日期字符串转换为JSON日期格式

将字符串日期转换为ISO格式日期

将日期(字符串)转换为日期时间格式

将日期格式的字符串转换为其他日期格式的字符串

使用Javascript将字符串(日期格式)转换为日期时间

MongoDB 3.4如何使用特定的日期格式将字符串转换为日期

如何将具有Etc / GMT的日期字符串转换为Python日期时间?

将具有多个日期的字符串转换为日期时间

将日期格式转换为Pandas中的字符串

JQuery:将字符串转换为日期格式

将字符串转换为日期格式

将“ YYYYMMDDHHMMSS”格式的字符串转换为日期时间

将日期字符串转换为其他格式

如何将字符串转换为日期格式

ParseExact 将字符串转换为日期格式

将pyspark字符串转换为日期格式

将字符串转换为特定格式的日期

将日期字符串转换为正确的格式

将字符串格式 Date(1528822800000) 转换为日期

将GMT格式的字符串转换为日期时间

将字符串转换为日期时间格式

将字符串转换为日期格式?