Форматировать дату из строки - PullRequest
4 голосов
/ 30 мая 2010

Я пытаюсь отформатировать дату из строки в другой формат.

Например: 2012-05-29 23:55:52 в 29/05 *newline* 2010.

Я просто не понимаю логики NSDate и NSDateFormatter, я думаю ..

Любая помощь будет оценена. Спасибо:)

Ответы [ 4 ]

9 голосов
/ 30 мая 2010

Вам нужно будет создать NSDateFormatter, а затем установить его dateFormat в соответствии с вашей первой датой, например:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

Это установит ваш форматер даты для распознавания вашей строки даты. После этого вы можете получить объект NSDate, используя

NSDate *myDate = [dateFormatter dateFromString:myDateString]; // myDateString is the 2012-05-29 23:55:52 string

Это дает вам полный объект NSDate, представляющий эту дату. Теперь вам нужно переформатировать дату и превратить ее обратно в строку, поэтому установите dateFormat в вашем форматере на новый формат и получите новое строковое представление возвращаемой даты:

[dateFormatter setDateFormat:@"dd/MM\nyyyy"];
NSString *newlyFormattedDateString = [dateFormatter stringFromDate:myDate];
[dateFormatter release], dateFormatter = nil;

И вуаля! У вас есть новая дата:)

1 голос
/ 22 июля 2016

Если вы выполняете только простую обработку строк, просмотр объекта даты на самом деле не нужен.

 let dateString = "2012-05-29 23:55:52"
 let dateParts = dateString.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "- :")) 
 let newDateString = "\(dateParts[2])/\(dateParts[1])\n\(dateParts[0])"

 print(newDateString)
0 голосов
/ 22 мая 2019

Для тех, кто предпочитает использовать расширение.

extension String {
func formattedDate(inputFormat: String, outputFormat: String) -> String {
    let inputFormatter = DateFormatter()
    inputFormatter.dateFormat = inputFormat

    if let date = inputFormatter.date(from: self) {
        let outputFormatter = DateFormatter()
        outputFormatter.dateFormat = outputFormat
        return outputFormatter.string(from: date)
    } else {
        return self  // If the string is not in the correct format, we return it without formatting
    }
}

Использование:

tfDate.text = strDate.formattedDate(inputFormat: "yyyy-MM-dd", outputFormat: "dd/MM/yyyy")
0 голосов
/ 24 марта 2018

Пожалуйста, найдите следующий код для преобразования даты из одного формата в другой формат. Это даст время в вашей текущей зоне.

func convertDateFormat(sourceString : String, sourceFormat : String, destinationFormat : String) -> String{

    let dateFormatter = DateFormatter();
    dateFormatter.dateFormat = sourceFormat;

    if let date = dateFormatter.date(from: sourceString){
        dateFormatter.dateFormat = destinationFormat;
        return dateFormatter.string(from: date)
    }else{
        return ""
    }
}
...