2015-10-31 7 views
0

Как я могу достичь такого формата? с использованием «NSDateFormatter»NSDateFormatter в IOS SWIFT 2

1-2 марта 2016 года? Есть ли формат, чтобы получить только день, только месяц, только год?

let dateString = self.dateLists[indexPath.row] 
    let dateFormatter2 = NSDateFormatter() 
    dateFormatter2.dateFormat = "MMMM" 
    let date2 = dateFormatter2.dateFromString(dateString as String) 
+0

, пожалуйста, обратитесь к ссылке, это работает отлично ... http://stackoverflow.com/a/35363650/4524276 –

ответ

0

Вам нужен правильный формат даты, чтобы получить все, что вы хотите, от Даты.

Если дата является строкой, вы должны преобразовать его первым к NSDate()

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd" // the format of your string 
dateFormatter.timeZone = NSTimeZone(name: "GMT") 
if let date = dateFormatter.dateFromString(dateString) { 
    // conversation to NSDate() was successful 
    // now convert to anything you want 

    dateFormatter.dateFormat = "MMMM" 
    let newDateString = dateFormatter.stringFromDate(date) 
} 

Здесь представлены все доступные Dateformatters, например:

Месяц только (как текст):

“MMMM” 

Или, как 2 цифры Строка:

“MM” 

Вот все, что вам нужно:

http://www.codingexplorer.com/swiftly-getting-human-readable-date-nsdateformatter/

+0

как я могу преобразовать строку в NSDate .. все, кажется, не работает .. мой формат сохранения NSDate для String «MMMM dd YYYY hh: mm a», тогда мне нужно снова преобразовать его в NSDate, чтобы получить месяц ... я не могу получить месяц. – zapzapzap

+0

Нет смысла делать экземпляр NSDate только месяцем. месяц не представляет собой «штамп». есть бесконечные числа экземпляров NSDate в тот же месяц ... – user3441734

0
let str1 = "May 12 1968 04:00 PM" 
let str2 = "May" 
let dateFormatter = NSDateFormatter() 
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
dateFormatter.dateFormat = "MM" 
let date1 = dateFormatter.dateFromString(str1) // nil 
let date2 = dateFormatter.dateFromString(str2) // May 1, 2000, 12:00 AM 
dateFormatter.dateFormat = "MM dd yyyy hh:mm a" 
let date3 = dateFormatter.dateFromString(str1) // May 12, 1968, 04:00 PM 
let date4 = dateFormatter.dateFromString(str2) // nil 
  1. проверить входную строку ... она должна соответствовать форматировать
  2. проверить региональные настройки, даже если вы определили свой собственный формат, система использует локаль (gregorian vs julian calendar ... и т. д.)
  3. если он все еще не работает, проанализируйте строку «вручную»
+0

30 мая 2016 04:00 Это моя сохраненная строка .. я не могу преобразовать ее обратно в NSDate .. – zapzapzap

+0

Также я не могу получить только месяц. – zapzapzap

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