Как мне преобразовать это datetime из даты?
От этого: 2016-02-29 12:24:26
по: 29 февраля 2016 г.
Пока что это мой код, который возвращает нулевое значение:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.timeZone = NSTimeZone(name: "UTC")
let date: NSDate? = dateFormatter.dateFromString("2016-02-29 12:24:26")
print(date)
ios
swift
nsdate
nsdateformatter
Сидней Лотерия
источник
источник
Это может быть полезно для тех, кто хочет использовать dateformater.dateformat; если вы хотите, чтобы
12.09.18
вы использовалиdateformater.dateformat = "dd.MM.yy"
Wednesday, Sep 12, 2018 --> EEEE, MMM d, yyyy 09/12/2018 --> MM/dd/yyyy 09-12-2018 14:11 --> MM-dd-yyyy HH:mm Sep 12, 2:11 PM --> MMM d, h:mm a September 2018 --> MMMM yyyy Sep 12, 2018 --> MMM d, yyyy Wed, 12 Sep 2018 14:11:54 +0000 --> E, d MMM yyyy HH:mm:ss Z 2018-09-12T14:11:54+0000 --> yyyy-MM-dd'T'HH:mm:ssZ 12.09.18 --> dd.MM.yy 10:41:02.112 --> HH:mm:ss.SSS
источник
Swift 3 и выше
let dateFormatter = DateFormatter() dateFormatter.dateStyle = .medium dateFormatter.timeStyle = .none dateFormatter.locale = Locale.current print(dateFormatter.string(from: date)) // Jan 2, 2001
Это также полезно, если вы хотите локализовать свое приложение. Локаль (идентификатор:) использует код ISO 639-1 . См. Также документацию Apple
источник
Locale.current
чтобы использовать языковой стандарт пользователя.Swift - 5.0
let date = Date() let formate = date.getFormattedDate(format: "yyyy-MM-dd HH:mm:ss") // Set output formate extension Date { func getFormattedDate(format: String) -> String { let dateformat = DateFormatter() dateformat.dateFormat = format return dateformat.string(from: self) } }
Swift - 4.0
2018-02-01T19: 10: 04 + 00: 00 Конвертировать 01 февраля 2018 г.
extension Date { static func getFormattedDate(string: String , formatter:String) -> String{ let dateFormatterGet = DateFormatter() dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" let dateFormatterPrint = DateFormatter() dateFormatterPrint.dateFormat = "MMM dd,yyyy" let date: Date? = dateFormatterGet.date(from: "2018-02-01T19:10:04+00:00") print("Date",dateFormatterPrint.string(from: date!)) // Feb 01,2018 return dateFormatterPrint.string(from: date!); } }
источник
Версия Swift 3 с новым
Date
объектомNSDate
:let dateFormatterGet = DateFormatter() dateFormatterGet.dateFormat = "yyyy-MM-dd HH:mm:ss" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MMM dd,yyyy" let date: Date? = dateFormatterGet.date(from: "2017-02-14 17:24:26") print(dateFormatter.string(from: date!))
EDIT: после Mitul-nakum предложение
источник
быстрый 3
let date : Date = Date() let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MMM dd, yyyy" let todaysDate = dateFormatter.string(from: date)
источник
Я решил свою проблему в формате
yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
(например, 2018-06-15T00: 00: 00.000Z) следующим образом:func formatDate(date: String) -> String { let dateFormatterGet = DateFormatter() dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" let dateFormatter = DateFormatter() dateFormatter.dateStyle = .medium dateFormatter.timeStyle = .none // dateFormatter.locale = Locale(identifier: "en_US") //uncomment if you don't want to get the system default format. let dateObj: Date? = dateFormatterGet.date(from: date) return dateFormatter.string(from: dateObj!) }
источник
Swift 3 с
Date
расширениемextension Date { func string(with format: String) -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = format return dateFormatter.string(from: self) } }
Тогда вы можете использовать это так:
let date = Date() date.string(with: "MMM dd, yyyy")
источник
Swift 4, 4.2 и 5
func getFormattedDate(date: Date, format: String) -> String { let dateformat = DateFormatter() dateformat.dateFormat = format return dateformat.string(from: date) } let formatingDate = getFormattedDate(date: Date(), format: "dd-MMM-yyyy") print(formatingDate)
источник
DateFormatter()
! Что следует знать:DateFormatter
также учитывается регион приложения (установленный в схеме)! Например,2019-05-27 11:03:03 +0000
с форматомyyyy-MM-dd HH:mm:ss
и "Германией" как регион превращается2019-05-27 13:03:03
. Эта разница вызвана DST: летом в Германии GMT + 2, а зимой - по GMT + 1.Если вы хотите проанализировать дату из «1996-12-19T16: 39: 57-08: 00», используйте следующий формат «гггг-ММ-дд'T'HH: мм: ссЗЗЗЗЗ»:
let RFC3339DateFormatter = DateFormatter() RFC3339DateFormatter.locale = Locale(identifier: "en_US_POSIX") RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0) /* 39 minutes and 57 seconds after the 16th hour of December 19th, 1996 with an offset of -08:00 from UTC (Pacific Standard Time) */ let string = "1996-12-19T16:39:57-08:00" let date = RFC3339DateFormatter.date(from: string)
от Apple https://developer.apple.com/documentation/foundation/dateformatter
источник
Еще одна интересная возможность форматирования даты. Этот снимок экрана принадлежит приложению Apple «Новости».
Вот код:
let dateFormat1 = DateFormatter() dateFormat1.dateFormat = "EEEE" let stringDay = dateFormat1.string(from: Date()) let dateFormat2 = DateFormatter() dateFormat2.dateFormat = "MMMM" let stringMonth = dateFormat2.string(from: Date()) let dateFormat3 = DateFormatter() dateFormat3.dateFormat = "dd" let numDay = dateFormat3.string(from: Date()) let stringDate = String(format: "%@\n%@ %@", stringDay.uppercased(), stringMonth.uppercased(), numDay)
К альтернативе, предложенной лоренцоливето, добавить нечего. Это просто идеально.
let dateFormat = DateFormatter() dateFormat.dateFormat = "EEEE\nMMMM dd" let stringDate = dateFormat.string(from: Date()).uppercased()
источник
import UIKit // Example iso date time let isoDateArray = [ "2020-03-18T07:32:39.88Z", "2020-03-18T07:32:39Z", "2020-03-18T07:32:39.8Z", "2020-03-18T07:32:39.88Z", "2020-03-18T07:32:39.8834Z" ] let dateFormatterGetWithMs = DateFormatter() let dateFormatterGetNoMs = DateFormatter() // Formater with and without millisecond dateFormatterGetWithMs.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" dateFormatterGetNoMs.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'" let dateFormatterPrint = DateFormatter() dateFormatterPrint.dateFormat = "MMM dd,yyyy" for dateString in isoDateArray { var date: Date? = dateFormatterGetWithMs.date(from: dateString) if (date == nil){ date = dateFormatterGetNoMs.date(from: dateString) } print("===========>",date!) }
источник
Чтобы преобразовать 2016-02-29 12:24:26 в дату, используйте это средство форматирования даты:
let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
Изменить: чтобы получить результат 29 февраля 2016 г., используйте этот форматер даты:
let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "MMM dd, yyyy"
источник
просто используйте функцию ниже для преобразования формата даты: -
let convertedFormat = convertToString(dateString: "2019-02-12 11:23:12", formatIn: "yyyy-MM-dd hh:mm:ss", formatOut: "MMM dd, yyyy") //calling function print(convertedFormat) // feb 12 2019 func convertToString (dateString: String, formatIn : String, formatOut : String) -> String { let dateFormater = DateFormatter() dateFormater.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone! dateFormater.dateFormat = formatIn let date = dateFormater.date(from: dateString) dateFormater.timeZone = NSTimeZone.system dateFormater.dateFormat = formatOut let timeStr = dateFormater.string(from: date!) return timeStr }
источник
Для Swift 4.2, 5
Передавайте дату и формат, как хотите. Чтобы выбрать формат, посетите сайт NSDATEFORMATTER :
static func dateFormatter(date: Date,dateFormat:String) -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = dateFormat return dateFormatter.string(from: date) }
источник
Поместите его в расширение и назовите, как показано ниже. Его легко использовать во всем приложении.
self.getFormattedDate(strDate: "20-March-2019", currentFomat: "dd-MMM-yyyy", expectedFromat: "yyyy-MM-dd")
Реализация
func getFormattedDate(strDate: String , currentFomat:String, expectedFromat: String) -> String{ let dateFormatterGet = DateFormatter() dateFormatterGet.dateFormat = currentFomat let date : Date = dateFormatterGet.date(from: strDate) ?? Date() dateFormatterGet.dateFormat = expectedFromat return dateFormatterGet.string(from: date) }
источник
быстрый 3
func dataFormat(dataJ: Double) -> String { let dateFormatter = DateFormatter() dateFormatter.dateStyle = .long dateFormatter.timeStyle = .none let date = Date(timeIntervalSince1970: dataJ) return (dataJ != nil) ? "Today, \(dateFormatter.string(from: date))" : "Date Invalid" }
источник
Я рекомендую добавить часовой пояс по умолчанию. Я покажу пример для swift 5
1. новый файл расширения.
Date+Formatter.swift
import Foundation extension Date { func getFormattedDateString(format: String) -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = format dateFormatter.timeZone = TimeZone.current return dateFormatter.string(from: self) } }
let date = Date() let dateString = date.getFormattedDateString(format: "yyyy-MM-dd HH:mm:ss") print("dateString > \(dateString)") // print // dateString > 2020-04-30 15:15:21
источник
Конвертируйте ответ @BatyrCan в Swift 5.3 с дополнительными форматами. Протестировано в Xcode 12.
let dateFormatter = DateFormatter() dateFormatter.dateFormat = "HH:mm:ss" var dateFromStr = dateFormatter.date(from: "12:16:45")! dateFormatter.dateFormat = "hh:mm:ss a 'on' MMMM dd, yyyy" //Output: 12:16:45 PM on January 01, 2000 dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z" //Output: Sat, 1 Jan 2000 12:16:45 +0600 dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" //Output: 2000-01-01T12:16:45+0600 dateFormatter.dateFormat = "EEEE, MMM d, yyyy" //Output: Saturday, Jan 1, 2000 dateFormatter.dateFormat = "MM-dd-yyyy HH:mm" //Output: 01-01-2000 12:16 dateFormatter.dateFormat = "MMM d, h:mm a" //Output: Jan 1, 12:16 PM dateFormatter.dateFormat = "HH:mm:ss.SSS" //Output: 12:16:45.000 dateFormatter.dateFormat = "MMM d, yyyy" //Output: Jan 1, 2000 dateFormatter.dateFormat = "MM/dd/yyyy" //Output: 01/01/2000 dateFormatter.dateFormat = "hh:mm:ss a" //Output: 12:16:45 PM dateFormatter.dateFormat = "MMMM yyyy" //Output: January 2000 dateFormatter.dateFormat = "dd.MM.yy" //Output: 01.01.00 //Customisable AP/PM symbols dateFormatter.amSymbol = "am" dateFormatter.pmSymbol = "Pm" dateFormatter.dateFormat = "a" //Output: Pm // Usage var timeFromDate = dateFormatter.string(from: dateFromStr) print(timeFromDate)
источник