我希望这个日期" 2016-10-18 22:06:20 + 0000"至" 18-10-2016",这可能吗?我设法得到如下日期:
var formatter = DateFormatter()
formatter.dateFormat = "yyy-MM-dd'HH:mm:ss.SSSZ"
let stringDate = formatter.string(from: currentDate)
以上给我" 10/18/16",但我怎样才能得到" 18-10-2016"?
答案 0 :(得分:4)
你在问题中提出的内容很少有道理。您的日期不是2016-10-18 22:06:20 +0000
。您发布的代码会将当前Date
转换为字符串。但您声称希望该字符串采用18-10-2016
格式,但您的代码使用完全不同的格式。
为什么不这样做:
var formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let stringDate = formatter.string(from: currentDate)
这会将currentDate
转换为您在问题中提到的格式的字符串。
答案 1 :(得分:4)
extension Foundation.Date {
func dashedStringFromDate() -> String {
let dateFormatter = DateFormatter()
let date = self
dateFormatter.dateFormat = "dd-MM-yyyy"
return dateFormatter.string(from: date)
}
}
let date = Foundation.Date()
let formatedDate = date.dashedStringFromDate()
答案 2 :(得分:4)
如果您确实有一个格式为2016-10-18 22:06:20 +0000
的字符串,并且想要将其转换为18-10-2016
,那么您需要两个日期格式化程序。
首先将原始字符串转换为日期:
let string = "2016-10-18 22:06:20 +0000"
let formatter1 = DateFormatter()
formatter1.locale = Locale(identifier: "en_US_POSIX") // if this string was from web service or a database, you should set the locale
formatter1.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
guard let date = formatter1.date(from: string) else {
fatalError("Couldn't parse original date string")
}
如果您希望以18-10-2016
的格式构建新字符串,那么您将使用第二个格式化程序:
let formatter2 = DateFormatter()
formatter2.dateFormat = "dd-MM-yyyy"
let result = formatter2.string(from: date)