Skip to content

Instantly share code, notes, and snippets.

@matnogaj
Last active January 17, 2017 09:43
Show Gist options
  • Save matnogaj/8f6934a695b0013db7665d4f7e793ed7 to your computer and use it in GitHub Desktop.
Save matnogaj/8f6934a695b0013db7665d4f7e793ed7 to your computer and use it in GitHub Desktop.
ChineseNewYear
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