FSCalendar/Example-Objc/LunarFormatter.m

54 lines
1.9 KiB
Objective-C

//
// LunarFormatter.m
// FSCalendar
//
// Created by Wenchao Ding on 25/07/2017.
// Copyright © 2017 wenchaoios. All rights reserved.
//
#import "LunarFormatter.h"
@interface LunarFormatter ()
@property (strong, nonatomic) NSCalendar *chineseCalendar;
@property (strong, nonatomic) NSDateFormatter *formatter;
@property (strong, nonatomic) NSArray<NSString *> *lunarDays;
@property (strong, nonatomic) NSArray<NSString *> *lunarMonths;
@end
@implementation LunarFormatter
- (instancetype)init
{
self = [super init];
if (self) {
self.chineseCalendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierChinese];
self.formatter = [[NSDateFormatter alloc] init];
self.formatter.calendar = self.chineseCalendar;
self.formatter.dateFormat = @"M";
self.lunarDays = @[@"初二",@"初三",@"初四",@"初五",@"初六",@"初七",@"初八",@"初九",@"初十",@"十一",@"十二",@"十三",@"十四",@"十五",@"十六",@"十七",@"十八",@"十九",@"二十",@"二一",@"二二",@"二三",@"二四",@"二五",@"二六",@"二七",@"二八",@"二九",@"三十"];
self.lunarMonths = @[@"正月",@"二月",@"三月",@"四月",@"五月",@"六月",@"七月",@"八月",@"九月",@"十月",@"冬月",@"腊月"];
}
return self;
}
- (NSString *)stringFromDate:(NSDate *)date
{
NSInteger day = [self.chineseCalendar component:NSCalendarUnitDay fromDate:date];
if (day != 1) {
return self.lunarDays[day-2];
}
// First day of month
NSString *monthString = [self.formatter stringFromDate:date];
if ([self.chineseCalendar.veryShortMonthSymbols containsObject:monthString]) {
return self.lunarMonths[monthString.integerValue-1];
}
// Leap month
NSInteger month = [self.chineseCalendar component:NSCalendarUnitMonth fromDate:date];
monthString = [NSString stringWithFormat:@"闰%@", self.lunarMonths[month-1]];
return monthString;
}
@end