2016-12-25 1 views

Antwort

1

Sie können prüfen, ob der erste Tag des Monats, in Frage, wenn es auf Sprung, ein gültiges Datum ist oder nicht:

func isLeap(month: Int, year: Int, era: Int, calendar: Calendar) -> Bool { 
    var components = DateComponents() 
    components.era = era 
    components.year = year 
    components.month = month 
    components.day = 1 
    components.isLeapMonth = true 

    return components.isValidDate(in: calendar) 
} 

// The Chinese year that begins in 2017 
isLeap(month: 5, year: 34, era: 78, calendar: Calendar(identifier: .chinese)) // false 
isLeap(month: 6, year: 34, era: 78, calendar: Calendar(identifier: .chinese)) // true 

// The Chinese year that begins in 2020 
isLeap(month: 3, year: 37, era: 78, calendar: Calendar(identifier: .chinese)) // false 
isLeap(month: 4, year: 37, era: 78, calendar: Calendar(identifier: .chinese)) // true 

Nach this list, gibt es ein paar Kalender-Systeme, den Schaltmonat verwenden als der Datumskorrekturmechanismus. Der chinesische Kalender ist mir vertrauter. Sie können es gegen die list of leap months in the Chinese calendar

Querverweis beziehen
Verwandte Themen