我想将其转换为Swift 4中的 2017年12月31日8:00:00 到 dd-mm-yyyy HH:ii 格式。
到目前为止,这是我的代码:
let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MMM dd, yyyy hh:mm:ss a"//this your string date format if let translatedDate = dateFormatter.date(from: datetime) { dateFormatter.dateFormat = "dd-MM-yyyy HH:ii" return dateFormatter.string(from: translatedDate) }
该代码永远不会输入if语句。我猜我的日期格式不正确。
在日期及其文本表示形式之间进行转换的DateFormatter。
您可以在此处找到更多Locale标识符。
Locale
并尝试此代码。
let dateStr = "Wed, 26 Jul 2017 18:10:02 +0530" if let date = Date(fromString: dateStr, format: "MMM dd, yyyy hh:mm:ss a") { debugPrint(date.toString(format: "dd-MM-yyyy HH:ii")) }
日期延长是…
extension Date { // Initializes Date from string and format public init?(fromString string: String, format: String, identifier: String = Locale.current.identifier) { let formatter = DateFormatter() formatter.dateFormat = format formatter.locale = Locale(identifier: identifier) if let date = formatter.date(from: string) { self = date } else { return nil } } // Converts Date to String, with format public func toString(format: String, identifier: String = Locale.current.identifier) -> String { let formatter = DateFormatter() formatter.locale = Locale(identifier: identifier) formatter.dateFormat = format return formatter.string(from: self) } }
字符串扩展名是…
extension String { // Converts String to formated date string, with inputFormat and outputFormat public func toDate(form inputFormat: String, to outputFormat: String, identifier: String = Locale.current.identifier) -> String? { return Date(fromString: self, format: inputFormat, identifier: identifier)?.toString(format: outputFormat, identifier: identifier) } // Converts String to Date, with format func toDate(format: String, identifier: String = Locale.current.identifier) -> Date? { return Date(fromString: self, format: format, identifier: identifier) } }