日期字符串转换不 return 小数毫秒 Swift
Date string conversion doesn't return decimal miliseconds Swift
我需要检查日期字符串是否完全符合这种格式 2017-01-01 00:00:00.000,小数点后 3 毫秒,否则 return.
我正在使用 yyyy-MM-dd hh:mm:ss.SSS
但这没有 return 任何十进制毫秒。这是为什么?当我使用 DateFormatter
将 Date()
转换为字符串时,它 return 是正确的 ss.SSS
.
let str = "2017-01-01 00:00:00.000"
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
df.timeZone = NSTimeZone(abbreviation: "GMT") as TimeZone!
if let date = df.date(from: str) {
print("date: \(date)")
} else {
print("no")
}
output: date: 2017-01-01 00:00:00 +0000
更多,如果我加上ss.S/ss.SS all return true 就没有错误了。为什么?
date formatter patterns 表示毫秒的 1...n
位有效。您可以根据需要写任意多的大写 S
- 这没有区别。您必须单独检查第二个条件:
extension String {
var endsWithThreeDecimalDigits: Bool {
return self.range(of: "\.\d{3}$", options: .regularExpression) != nil
}
}
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
df.timeZone = TimeZone(abbreviation: "GMT")
if let date = df.date(from: str), str.endsWithThreeDecimalDigits {
print("date: \(date)")
} else {
print("no")
}
我需要检查日期字符串是否完全符合这种格式 2017-01-01 00:00:00.000,小数点后 3 毫秒,否则 return.
我正在使用 yyyy-MM-dd hh:mm:ss.SSS
但这没有 return 任何十进制毫秒。这是为什么?当我使用 DateFormatter
将 Date()
转换为字符串时,它 return 是正确的 ss.SSS
.
let str = "2017-01-01 00:00:00.000"
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
df.timeZone = NSTimeZone(abbreviation: "GMT") as TimeZone!
if let date = df.date(from: str) {
print("date: \(date)")
} else {
print("no")
}
output: date: 2017-01-01 00:00:00 +0000
更多,如果我加上ss.S/ss.SS all return true 就没有错误了。为什么?
date formatter patterns 表示毫秒的 1...n
位有效。您可以根据需要写任意多的大写 S
- 这没有区别。您必须单独检查第二个条件:
extension String {
var endsWithThreeDecimalDigits: Bool {
return self.range(of: "\.\d{3}$", options: .regularExpression) != nil
}
}
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
df.timeZone = TimeZone(abbreviation: "GMT")
if let date = df.date(from: str), str.endsWithThreeDecimalDigits {
print("date: \(date)")
} else {
print("no")
}