Last active
January 17, 2017 09:43
-
-
Save matnogaj/8f6934a695b0013db7665d4f7e793ed7 to your computer and use it in GitHub Desktop.
ChineseNewYear
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func isChineseNewYear() -> Bool { | |
let today = Date() | |
let chineseCalendar = Calendar(identifier: Calendar.Identifier.chinese) | |
var components = chineseCalendar.dateComponents([.year, .timeZone], from: today) | |
guard let chineseDate = chineseCalendar.date(from: components) else { return false } | |
let chineseYear = Calendar.current.component(.year, from: chineseDate) | |
let currentYear = Calendar.current.component(.year, from: today) | |
guard let year = components.year else { return false } | |
components.year = year + (currentYear - chineseYear) | |
guard let date = chineseCalendar.date(from: components) else { return false } | |
guard let month = date.dateComponents().month else { return false } | |
guard let day = date.dateComponents().day else { return false } | |
return day == 1 && month == 1 | |
} | |
func isChineseNewYearPeriod() -> Bool { | |
let today = Date() | |
let chineseCalendar = Calendar(identifier: Calendar.Identifier.chinese) | |
var components = chineseCalendar.dateComponents([.year, .timeZone], from: today) | |
components.hour = 0 | |
components.minute = 0 | |
guard let chineseDate = chineseCalendar.date(from: components) else { return false } | |
let chineseYear = Calendar.current.component(.year, from: chineseDate) | |
let currentYear = Calendar.current.component(.year, from: today) | |
guard let year = components.year else { return false } | |
components.year = year + (currentYear - chineseYear) | |
guard let chineseNewYearDate = chineseCalendar.date(from: components) else { return false } | |
guard let startDate = chineseCalendar.date(byAdding: .day, value: -7, to: chineseNewYearDate) else { return false } | |
guard let endDate = chineseCalendar.date(byAdding: .day, value: 21, to: chineseNewYearDate) else { return false } | |
return today.isGreaterThanDate(startDate) && today.isLessThanDate(endDate) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment