Преобразование NSDate в строку в iOS Swift
Я пытаюсь преобразовать NSDate
в String
, а затем Изменить формат. Но когда я передаю NSDate
в String
, он создает пробелы.
let formatter = DateFormatter()
let myString = (String(describing: date))
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
print(yourDate)
Ответы
Ответ 1
например, например,
let formatter = DateFormatter()
// initially set the format based on your datepicker date
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: Date())
// convert your string to date
let yourDate = formatter.date(from: myString)
//then again set the date format whhich type of output you need
formatter.dateFormat = "dd-MMM-yyyy"
// again convert your date to string
let myStringafd = formatter.string(from: yourDate!)
print(myStringafd)
вы получаете результат как
![введите описание изображения здесь]()
Ответ 2
Я всегда использую этот код при преобразовании Date
в String
. (Swift 3)
extension Date
{
func toString( dateFormat format : String ) -> String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = format
return dateFormatter.string(from: self)
}
}
и вызывайте так.,
let today = Date()
today.toString(dateFormat: "dd-MM")
Ответ 3
Ваш обновленный code.update.
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: date as Date)
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
print(yourDate!)
Ответ 4
Вы можете использовать это расширение:
extension Date {
func toString(withFormat format: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = format
let myString = formatter.string(from: self)
let yourDate = formatter.date(from: myString)
formatter.dateFormat = format
return formatter.string(from: yourDate!)
}
}
И используйте его в своем контроллере вида, подобном этому (замените < "yyyy" > на ваш формат):
yourString = yourDate.toString(withFormat: "yyyy")
Ответ 5
После выделения DateFormatter
вам нужно отформатировать строку
то вы можете преобразовать как строку, как этот путь
var date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let myString = formatter.string(from: date)
let yourDate: Date? = formatter.date(from: myString)
formatter.dateFormat = "dd-MMM-yyyy"
let updatedString = formatter.string(from: yourDate!)
print(updatedString)
Вывод
01-Mar-2017
Ответ 6
Что-то, что следует помнить при создании formatters, - это попытаться повторно использовать один и тот же экземпляр, если это возможно, поскольку форматирование достаточно дорого вычислительно дорого. Ниже приведен шаблон, который я часто использую для приложений, где я могу использовать один и тот же форматтер-приложение, адаптированный из NSHipster.
extension DateFormatter {
static var sharedDateFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
// Add your formatter configuration here
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return dateFormatter
}()
}
Использование:
let dateString = DateFormatter.sharedDateFormatter.string(from: Date())
Ответ 7
DateFormatter
имеет несколько стилей даты factory для тех, кто слишком ленив, чтобы возиться со строками форматирования. Если вам не нужен особый стиль, вот еще один вариант:
extension Date {
func asString(style: DateFormatter.Style) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = style
return dateFormatter.string(from: self)
}
}
Это дает вам следующие стили:
short, medium, long, full
Пример использования:
let myDate = Date()
myDate.asString(style: .full) // Wednesday, January 10, 2018
myDate.asString(style: .long) // January 10, 2018
myDate.asString(style: .medium) // Jan 10, 2018
myDate.asString(style: .short) // 1/10/18