有没有办法以毫秒为单位打印完整日期?
例如,我正在这样做:
print("\(NSDate())")
但我刚刚明白了:
2016-05-09 22:07:19 +0000
如何获取完整日期中的毫秒数?
更新为 Swift 3
let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "y-MM-dd H:mm:ss.SSSS"
formatter.string(from: date) // -> "2016-11-17 17:51:15.1720"
当您有
Date
date
时,您可以使用 DateFormatter
获取格式化字符串。您还可以使用格式化程序将基于您的格式的字符串日期转换为 Date
有关 dateFormat 功能的更多信息,请参阅此图表 http://waracle.net/iphone-nsdateformatter-date-formatting-table/
Swift 5 与时间戳字符串扩展
extension String {
static func timestamp() -> String {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyyMMdd'T'HHmmss.SSSS"
let now = Date.now
return String(format: "%@", dateFormatter.string(from: now))
}
func tad2Date() -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyyMMdd'T'HHmmss.SSSS"
return dateFormatter.date(from: self)
}
}
formatted()
API 来显示毫秒:
let date = Date()
print(date.formatted(Date.FormatStyle().month(.twoDigits).day(.twoDigits).year().hour().minute().second(.twoDigits).secondFraction(.fractional(3)).timeZone(.iso8601(.short))))
// "18.04.2024, 11:50:14,696 +0200" (my current locale is "DE")
现在这是一些长字符串。您可以将其分解并将格式存储在某处以供重复使用:
let preferredFormat = Date.FormatStyle()
.weekday(.abbreviated)
.month(.twoDigits)
.day(.twoDigits)
.year()
.hour()
.minute()
.second(.twoDigits)
.secondFraction(.fractional(3))
.timeZone(.iso8601(.short))
.locale(.init(identifier: "US"))
print(date.formatted(preferredFormat))
// "Thu, 04/18/2024, 11:49:44.133 +0200"