我有一个包含日期的字符串,格式如下:Thu, 04 Sep 2014 10:50:12 +0000。请问您知道怎么将其转换为04-09-2014(dd-MM-yyyy)的格式吗?当然,需要使用Swift。
如果上述方法不起作用,可以尝试这个:
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "US_en")
formatter.dateFormat = "E, dd MMM yyyy HH:mm:ss Z"
let date = formatter.date(from: "Thu, 04 Sep 2014 10:50:12 +0000")
我知道这个问题的答案已经被接受了,但是那个答案中显示的方法并没有完全按照dd-MM-yyyy格式输出日期。所以我还是要发布这篇文章,希望有人会觉得有用。
Swift 的一个很酷的特性就是扩展。因此,我将创建一个扩展,使其可重复使用。
创建一个 NSDate
扩展,并将以下代码放入其中。
import Foundation
extension NSDate {
convenience init(dateString: String) {
let dateStringFormatter = NSDateFormatter()
dateStringFormatter.dateFormat = "E, dd MMM yyyy HH:mm:ss Z"
dateStringFormatter.timeZone = NSTimeZone(name: "GMT")
let date = dateStringFormatter.dateFromString(dateString)
self.init(timeInterval:0, sinceDate:date!)
}
func getDatePart() -> String {
let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
formatter.timeZone = NSTimeZone(name: "GMT")
return formatter.stringFromDate(self)
}
}
这就是如何使用它。
NSDate(dateString: "Thu, 04 Sep 2014 10:50:12 +0000").getDatePart()
输出:2014年04月09日
您可以在这两个函数中更改格式,以接受和输出各种日期格式。
let mydateFormatter = NSDateFormatter()
mydateFormatter.dateFormat = "EEE, MMM d, YYYY hh:mm:ss.SSSSxxx"
let date = mydateFormatter.dateFromString(yourdatestring)
如果当前日期格式不起作用,请查看以下链接: http://userguide.icu-project.org/formatparse/datetime/
从iOS 15开始,我们可以这样转换:
let strategy = Date.ParseStrategy(format: "\(weekday: .abbreviated), \(day: .twoDigits) \(month: .abbreviated) \(year: .defaultDigits) \(hour: .twoDigits(clock: .twentyFourHour, hourCycle: .zeroBased)):\(minute: .twoDigits):\(second: .twoDigits) \(timeZone: .iso8601(.short))", timeZone: .current)
if let date = try? Date("Thu, 04 Sep 2014 10:50:12 +0000", strategy: strategy) {
// 04-09-2014
let dateString = "\(date.formatted(.dateTime.day(.twoDigits)))-\(date.formatted(.dateTime.month(.twoDigits)))-\(date.formatted(.dateTime.year()))"
}