2017-05-06 3 views
6

Je dois obtenir mai comme un mois en cours, mais je ne pouvais pas faire. Comment puis-je atteindre cet objectif.Comment puis-je obtenir le mois actuel en tant que chaîne dans swift:

let date = NSDate() 
    let calendar = NSCalendar.currentCalendar() 
    let components = calendar.components([.Day , .Month , .Year], fromDate: date) 

    let year = components.year 
    let month = components.month 
    let day = components.day 

J'ai fait cela mais cela n'a pas fonctionné.

+0

Voulez-vous que le nombre ordinal sous forme de chaîne, le nom du mois (dans quelle langue) ou autre chose? Et pensez à mettre à jour à Swift 3. C'est l'avenir. – vadian

+0

@vadian 3 est déjà passé. Nous sommes à 3.1 –

+0

@LeoDabus Bien sûr, je veux dire Swift 3 en termes de '≥' comme une mise à jour majeure. – vadian

Répondre

16
let now = NSDate() 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "LLLL" 
let nameOfMonth = dateFormatter.stringFromDate(now) 
+0

merci ... – iron

+2

Le format correct pour le mois autonome est LLLL http://userguide.icu-project.org/formatparse/datetime –

0

Vous utilisez DateFormatter() voir ci-dessous pour cela utilisé dans une extension à Date.

Ajoutez ceci n'importe où dans votre projet dans la portée globale.

extension Date { 
    func monthAsString() -> String { 
      let df = DateFormatter() 
      df.setLocalizedDateFormatFromTemplate("MMM") 
      return df.string(from: self) 
    } 

}

Ensuite, vous pouvez utiliser partout dans votre code.

let date = Date() 
date.monthAsString() // Returns current month e.g. "May" 
+0

dois-je utiliser NSdate date est non déclarée .... swift 2 – iron

5

Si vous utilisez Swift 3.0 puis extensions et Date de classe sont excellent moyen d'aller.

essayer ci-dessous le code

extension Date { 

     func getMonthName() -> String { 
     let dateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "MMMM" 
     let strMonth = dateFormatter.string(from: self) 
     return strMonth 
    } 


} 

Obtenez le travail avec comme ci-dessous

let date = Date() 

let monthString = date.getMonthName() 
+0

J'utilise swift 2 – iron

+0

juste obtenir sur Swift 3.0 si vous pouvez bro. bcz c'est beaucoup se passe sur le dernier ** rapide ** –