如何使用 SwiftDate 框架在当前时区打印日期和时间(本地化)
How to print Date&time (localized) in current timezone using SwiftDate framework
我正在使用 SwiftDate 框架(请参阅下面的 link)
https://github.com/malcommac/SwiftDate
我想打印当前 region/local/timeZone 中的日期和时间。我可以通过使用下面的代码而不使用 SwiftDate 来实现这一点:
DateFormatter.localizedString(from: Date(), dateStyle: .short, timeStyle: .short)
因为 SwiftDate 提供了一个共享的日期格式化程序。我想知道 SwiftDate 是否也可以做到这一点。
我使用扩展来获取本地化日期:
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."))
我试过 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 - 773x
SwiftDate - 2674x
NSDateFormatter 比 SwiftDate 快大约 3.45 倍。基于以上所述,我建议使用 NSDateFormatter 而不是 SwiftDate。
我正在使用 SwiftDate 框架(请参阅下面的 link) https://github.com/malcommac/SwiftDate
我想打印当前 region/local/timeZone 中的日期和时间。我可以通过使用下面的代码而不使用 SwiftDate 来实现这一点:
DateFormatter.localizedString(from: Date(), dateStyle: .short, timeStyle: .short)
因为 SwiftDate 提供了一个共享的日期格式化程序。我想知道 SwiftDate 是否也可以做到这一点。
我使用扩展来获取本地化日期:
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."))
我试过 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 - 773x SwiftDate - 2674x
NSDateFormatter 比 SwiftDate 快大约 3.45 倍。基于以上所述,我建议使用 NSDateFormatter 而不是 SwiftDate。