FSCalendar/Example-Swift/FSCalendarSwiftExample/LunarFormatter.swift

43 lines
1.5 KiB
Swift

//
// LunarFormatter.swift
// FSCalendarSwiftExample
//
// Created by Wenchao Ding on 25/07/2017.
// Copyright © 2017 wenchao. All rights reserved.
//
import UIKit
open class LunarFormatter: NSObject {
fileprivate let chineseCalendar = Calendar(identifier: .chinese)
fileprivate let formatter = DateFormatter()
fileprivate let lunarDays = ["初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","二一","二二","二三","二四","二五","二六","二七","二八","二九","三十"]
fileprivate let lunarMonths = ["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","腊月"]
override init() {
self.formatter.calendar = self.chineseCalendar
self.formatter.dateFormat = "M"
}
open func string(from date: Date) -> String {
let day = self.chineseCalendar.component(.day, from: date)
if day != 1 {
return self.lunarDays[day-2]
}
// First day of month
let monthString = self.formatter.string(from: date)
if self.chineseCalendar.veryShortMonthSymbols.contains(monthString) {
if let month = Int(monthString) {
return self.lunarMonths[month-1]
}
return ""
}
// Leap month
let month = self.chineseCalendar.component(.month, from: date)
return "" + self.lunarMonths[month-1]
}
}