如何使用SwiftDate框架打印当前时区的日期和时间(本地化)

问题描述 投票:1回答:2

我正在使用SwiftDate框架(请参见下面的链接)https://github.com/malcommac/SwiftDate

我想在当前区域/本地/时区中打印日期和时间。我可以通过使用以下代码而不使用SwiftDate来实现此目的:

DateFormatter.localizedString(from: Date(), dateStyle: .short, timeStyle: .short)

由于SwiftDate提供了共享的日期格式器。我想知道SwiftDate是否可以做到这一点。

ios swift datetime swiftdate
2个回答
0
投票

我使用扩展名来获取本地化日期:

import SwiftDate

extension Date {

//you can specify region/timezone/locale to what you want
    var localizedDate: DateInRegion {
        return self.in(region: Region(calendar: Calendar.current, zone: Zones.current, locale: Locale.current))
    }
}

然后您就这样使用它(如果您需要系统本地化的日期,只需省略扩展部分):

let dateString = Date().localizedDate.toString(.custom("dd.MM.yyyy."))

0
投票

我尝试了predrag-samardzic代码,并且有效。既然有两种选择(可以完成相同的工作),一种可以使用NSDateFormatter,而另一种可以使用SwiftDate,我想对它们进行性能分析以查看哪个更好。这是我用来剖析它们的代码:

func testNSDateFormatter() {
    for _ in 1...10000 {
        print("\(Date().toLocalizedString())")
    }
}

func testSwiftDate() {
    for _ in 1...10000 {
        print("\(Date().localizedDate.toString(.dateTime(.short)))")
    }
}

extension Date {
    func toLocalizedString(dateStyle: DateFormatter.Style = .short, timeStyle: DateFormatter.Style = .short) -> String {
        return DateFormatter.localizedString(from: self, dateStyle: dateStyle, timeStyle: timeStyle)
    }

    var localizedDate: DateInRegion {
         return self.in(region: Region(calendar: Calendar.current, zone: Zones.current, locale: Locale.current))
    }
}

这是分析器的屏幕截图。

NSDateFormatter Vs SwiftDate - Time Profile

分析结果:

NSDateFormatter-773xSwiftDate-2674x

NSDateFormatter比SwiftDate快约3.45倍。基于以上内容,我建议您在SwiftDate上使用NSDateFormatter。

© www.soinside.com 2019 - 2024. All rights reserved.