在 Swift 中将字符串转换为 NSDate
Converting a string to NSDate in Swift
我在 Swift 中将字符串转换为 NSDate 时遇到问题。我的日期字符串采用以下格式:
2016-05-06T14:07:23.430Z
我有一个函数可以 return 格式化日期字符串,如下所示,传递到函数中的日期字符串的格式如上所示:
private func formatDate(theDate:String?) -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yy H:mm"
let actualDate = dateFormatter.dateFromString(theDate!) //always produces nil
let formattedDate = dateFormatter.stringFromDate(actualDate!)
return formattedDate
}
当尝试从传递给函数的字符串中获取日期对象时,日期对象始终为 nil。任何人都可以协助解决这个问题吗?谢谢!
您使用了错误的日期格式。您不应该对输入日期和输出日期使用相同的 NSDateFormatter
。
试试这个:yyyy-dd-MM'T'HH:mm:ss.SSS'Z'
作为您的输入。这是一个完全有效的解决方案:
func formatDate(theDate: String?) -> String {
let inputDateFormatter = NSDateFormatter()
inputDateFormatter.dateFormat = "yyyy-dd-MM'T'HH:mm:ss.SSS'Z'"
let outputDateFormatter = NSDateFormatter()
outputDateFormatter.dateFormat = "MM-dd-yy H:mm"
let actualDate = inputDateFormatter.dateFromString(theDate!)
let formattedDate = outputDateFormatter.stringFromDate(actualDate!)
return formattedDate
}
formatDate("2016-05-06T14:07:23.430Z") // returns 06-05-16 14:07
let strDate = "2016-05-06T14:07:23.430Z"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
let date = dateFormatter.dateFromString(strDate)
看到这个答案:
let myDateString = "2016-05-06T14:07:23.430Z"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-dd-MM'T'HH:mm:ss.SSS'Z"
let dateFromString = dateFormatter.dateFromString(myDateString)
let dateFormatter1 = NSDateFormatter()
dateFormatter1.dateFormat = "MM-dd-yy H:mm"
let getDate = dateFormatter1.stringFromDate(dateFromString!)
print(getDate)
你的输出:
我在 Swift 中将字符串转换为 NSDate 时遇到问题。我的日期字符串采用以下格式:
2016-05-06T14:07:23.430Z
我有一个函数可以 return 格式化日期字符串,如下所示,传递到函数中的日期字符串的格式如上所示:
private func formatDate(theDate:String?) -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yy H:mm"
let actualDate = dateFormatter.dateFromString(theDate!) //always produces nil
let formattedDate = dateFormatter.stringFromDate(actualDate!)
return formattedDate
}
当尝试从传递给函数的字符串中获取日期对象时,日期对象始终为 nil。任何人都可以协助解决这个问题吗?谢谢!
您使用了错误的日期格式。您不应该对输入日期和输出日期使用相同的 NSDateFormatter
。
试试这个:yyyy-dd-MM'T'HH:mm:ss.SSS'Z'
作为您的输入。这是一个完全有效的解决方案:
func formatDate(theDate: String?) -> String {
let inputDateFormatter = NSDateFormatter()
inputDateFormatter.dateFormat = "yyyy-dd-MM'T'HH:mm:ss.SSS'Z'"
let outputDateFormatter = NSDateFormatter()
outputDateFormatter.dateFormat = "MM-dd-yy H:mm"
let actualDate = inputDateFormatter.dateFromString(theDate!)
let formattedDate = outputDateFormatter.stringFromDate(actualDate!)
return formattedDate
}
formatDate("2016-05-06T14:07:23.430Z") // returns 06-05-16 14:07
let strDate = "2016-05-06T14:07:23.430Z"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
let date = dateFormatter.dateFromString(strDate)
看到这个答案:
let myDateString = "2016-05-06T14:07:23.430Z"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-dd-MM'T'HH:mm:ss.SSS'Z"
let dateFromString = dateFormatter.dateFromString(myDateString)
let dateFormatter1 = NSDateFormatter()
dateFormatter1.dateFormat = "MM-dd-yy H:mm"
let getDate = dateFormatter1.stringFromDate(dateFromString!)
print(getDate)
你的输出: