字符串问题的时间戳?
Time stamp from string issue?
我有两个字符串,日期和时间。日期字符串有一个 "MM-dd-yyyy" 格式的日期和 "hh:mm a" 格式的时间,我想从中创建一个 10 位数字的时间戳。我做了以下操作,但我对此有疑问。感谢任何帮助。
let idate = (userInstance.userData?.Date!)! + "T" + (userInstance.userData?.Time!)! + "+0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: idate)!
print(date)
let timestamp = Int(date.timeIntervalSince1970)
print(timestamp)
您不能将包含 AM/PM 时间的日期强制为 ISO 8601。ISO 8601 日期始终以 24 小时模式表示。
此外,您的年月日顺序不符合 ISO 8601 标准。
指定合适的日期格式MM-dd-yyyyhh:mm aZ
let datePart = "09-18-2018"
let timePart = "4:22 pm"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "MM-dd-yyyyhh:mm aZ"
let date = dateFormatter.date(from: datePart + timePart + "+0000")!
let timestamp = Int(date.timeIntervalSince1970)
print(timestamp)
你在这里崩溃了:
let date = dateFormatter.date(from: idate)!
那是因为您声称 idate
是以下格式的字符串:
"yyyy-MM-dd'T'HH:mm:ssZ"
但事实并非如此。从字符串转换为日期时,格式字符串必须完全匹配字符串的格式。
然后您可以提供不同的格式并将日期转换为新字符串。
我有两个字符串,日期和时间。日期字符串有一个 "MM-dd-yyyy" 格式的日期和 "hh:mm a" 格式的时间,我想从中创建一个 10 位数字的时间戳。我做了以下操作,但我对此有疑问。感谢任何帮助。
let idate = (userInstance.userData?.Date!)! + "T" + (userInstance.userData?.Time!)! + "+0000"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: idate)!
print(date)
let timestamp = Int(date.timeIntervalSince1970)
print(timestamp)
您不能将包含 AM/PM 时间的日期强制为 ISO 8601。ISO 8601 日期始终以 24 小时模式表示。
此外,您的年月日顺序不符合 ISO 8601 标准。
指定合适的日期格式MM-dd-yyyyhh:mm aZ
let datePart = "09-18-2018"
let timePart = "4:22 pm"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "MM-dd-yyyyhh:mm aZ"
let date = dateFormatter.date(from: datePart + timePart + "+0000")!
let timestamp = Int(date.timeIntervalSince1970)
print(timestamp)
你在这里崩溃了:
let date = dateFormatter.date(from: idate)!
那是因为您声称 idate
是以下格式的字符串:
"yyyy-MM-dd'T'HH:mm:ssZ"
但事实并非如此。从字符串转换为日期时,格式字符串必须完全匹配字符串的格式。
然后您可以提供不同的格式并将日期转换为新字符串。