2016-03-19 4 views
2

Я хочу, чтобы преобразовать 2016-03-09 00:00:00 в 09/03/2016Как преобразовать строку date в NSDate?

Я стараюсь ниже код, но печать nil значение

var date: [String] = ["2016-03-09 00:00:00", "2016-03-20 00:00:00"] 

for i in date { 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "dd/MM/YYYY" 
    let showDate = dateFormatter.dateFromString(i) 
    print(showDate) 
} 

над кодом печати nil
Просьба помочь мне, как печать даты формат dd/MM/YYYY в быстрой

+0

Используйте '' YYYY-MM-dd HH: mm: ss "вместо этого, а затем измените его на' 09/03/2016'. – Eendje

+0

@Eendje Мне нужно печатать только дату («dd/MM/YYYY») из массива – iParesh

+0

значение даты из базы данных – iParesh

ответ

3

Я думаю, что ваш формат даты неправильный. изменить "DD/MM/YYYY" с "YYYY-MM-DD HH: MM: S" и попробовать ...

У вас есть дата, как "2016-03-09 00:00:00". . поэтому формат должен быть "YYYY-MM-дД ЧЧ: мМ: s"

for i in date { 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:s" 
    if let showDate = dateFormatter.dateFromString(i){ 
    print("Date with Time: \(showDate)") 
    dateFormatter.dateFormat = "YYYY-MM-dd" 
    let resultString   = dateFormatter.stringFromDate(showDate) 
    print("final result: \(resultString)") 
    } 
} 

Результат: -

Date with Time: 2016-03-09 00:00:00 +0000 
final result: 2016-03-09 
Date with Time: 2016-03-20 00:00:00 +0000 
final result: 2016-03-20 
+0

Мне нужно только распечатать дату, время не требуется – iParesh

+0

спасибо El Captain, что она исправно работает – iParesh

1

Вы должны сначала создать dateformatter для обработки типа. Затем сортировать ваш формат, такие как:

let date: [String] = ["2016-03-09 00:00:00", "2016-03-20 00:00:00"] 

for i in date { 
    let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:s" 
    let showDate:NSDate? = dateFormatter.dateFromString(i) 

    dateFormatter.dateFormat = "dd/MM/YYYY" 
    let date = dateFormatter.stringFromDate(showDate!) 
    print(date) 

} 
+0

спасибо он работает – iParesh

+0

Зачем создавать новый формат даты для каждого прохода через цикл, И каждый раз перенастраивать его с другим форматом? См. Мой ответ, где я создаю 2 форматирования даты один раз, вне цикла. МНОГО более эффективно. –

1

Вместо перенастройку единого форматирования даты на каждом проходе цикла в @ ElCaptain Ответит я предложил бы создать 2 вне цикла: дата ввода форматировочной для преобразования из «YYYY- MM-dd HH: mm: s "строки даты в NSDates и выходной форматтера для преобразования из NSDates в формат" YYYY-MM-dd ".

let inputFormatter = NSDateFormatter() 
inputFormatter.dateFormat = "YYYY-MM-dd HH:mm:s" 
let outputFormatter = NSDateFormatter() 
ourputFormatter.dateFormat = "YYYY-MM-dd" 

for i in date { 
    if let showDate = inputFormatter.dateFromString(i) { 
    print("Date with Time: \(showDate)") 
    let resultString = outputFormatter.stringFromDate(showDate) 
    print("final result: \(resultString)") 
    } 
} 
+0

вы правы, если размер массива даты 10 или больше, чем каждый раз, создайте новую переменную для NSDateFormatter. – iParesh

+0

спасибо за ans. В моем массиве дат содержится 1000 дат или более. – iParesh

+1

. Если вы обрабатываете 1000+ дат, тогда вы очень определенно хотите установить 2 date formatters за пределы цикла и использовать их. Код El Captain создаст новый формат даты и переконфигурирует его для каждого прохода через цикл, который является медленным и неэффективным. –

Смежные вопросы