2017-05-09 3 views
0

Je suis en train de convertir la chaîne de date « 06/18 » (MM/AA) au mois de composants etAA/MM dateString aux composants de date

let dateString = "06/18" 

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "MM/YY" 
if let date = dateFormatter.date(from: dateString) { 
    let calendar = Calendar(identifier: .gregorian) 
    let components = calendar.dateComponents([.month, .year], from: date) 
    // contains year: 2017 month: 12 isLeapMonth: false 
} 

Pourquoi les dateComponents année 2017 et 12 mois au lieu de 2018 et 12?

Est-ce un problème de fuseau horaire?

Existe-t-il un moyen propre d'obtenir le 2018 et le 12?

+2

Même dans la documentation d'Apple: * "Une erreur courante consiste à utiliser YYYY." * –

+0

toujours en utilisant 'envisager yy' au lieu de' YY' –

Répondre

3

Changé le dateFormat à MM/yy à partir de MM/YY et vous êtes prêt à partir.

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "MM/yy" 
if let date = dateFormatter.date(from: dateString) { 

} 
+0

... eh bien maintenant, je me sens stupide;) – MarkHim

+1

@MarkHim Ça arrive mate :) –