我使用的是SwiftDate框架(参见下面的链接) https://github.com/malcommac/SwiftDate
我想打印当前区域/本地/时区的日期和时间。我可以通过使用以下代码来实现这一点,而不使用SwiftDate:
DateFormatter.localizedString(from: Date(), dateStyle: .short, timeStyle: .short)因此,SwiftDate提供了一个共享日期格式化程序。我想知道SwiftDate是否也能做到这一点。
发布于 2020-03-09 14:05:01
我尝试过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。
发布于 2020-03-09 01:54:43
我使用扩展来获取本地化日期:
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."))https://stackoverflow.com/questions/60589787
复制相似问题