我使用日期格式 dd/MM/yyyy HH:mm z
将此Datestring 01/06/2017 14:31 GMT+10:00
解析为日期,但有时会提供零值。有时它可以正常工作。
您可以建议此日期字符串的正确日期格式吗?
我使用的是Swift 3.0和Xcode 8.3。
我的代码是:
static func getTimestampFromDateString(dateString:String) -> Int64{
let separated = dateString.components(separatedBy: " ")
let currentUser = User.getLoggedInUserDataModel()
let finalDateStr = "(String.getString(separated[0])) (String.getString(separated[1])) (String.getString(currentUser.timeZoneOffset))"
let date = convertStringToDate(dateString: finalDateStr, dateFormat: "dd/MM/yyyy HH:mm z")
let timestamp = Int64(date.timeIntervalSince1970)
return timestamp
}
static func convertStringToDate(dateString:String,dateFormat:String)->Date{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = dateFormat
let date:Date = dateFormatter.date(from: dateString)!
return date
}
问题不是您的日期格式。问题在于您正在强制解开可选的可选,这导致崩溃。如果正确解开可选值,则可以防止崩溃。请参阅可选的未包装:https://developer.apple.com/library/content/content/documentation/swift/coneppeual/swift_programming_language/thebasics.htmll#/apple_reff/apple_ref/doc/doc/doc/uid/uid/tp4001400140014014097-ch5-ch5-ch5-ch5-id-d--iid/div/div>
日期格式 "dd/MM/yyyy HH:mm z"
对我有用。顺便说一句,我在下面使用此代码
extension String
{
func toDate( dateFormat format : String) -> Date
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
if let date = dateFormatter.date(from: self)
{
return date
}
print("Invalid arguments ! Returning Current Date . ")
return Date()
}
}
这就是我打电话的方式。。
print("01/06/2017 14:31 GMT+10:00".toDate(dateFormat: "dd/MM/yyyy HH:mm z"))
您可以分两个步骤解决问题: 1:检查FinalDatester的日期形式,如果FinalDateSter与" DD/MM/YYYY HH:MM Z"相同,则可以在此构造中转换字符串。 2:在强制解开dateformatter.date之前检查零(来自:datestring(!
示例
if let date = dateFormatter.date(from: dateString)!
{
// got the date
}else {
// check finalDateStr formate
}