jgzhou
2021-04-01 3ab0da701943cf1b7f233d1d65016eac0827ee23
完善
3 files modified
713 ■■■■■ changed files
Lunar/Lunar/Tool/Lunar.h 331 ●●●●● patch | view | raw | blame | history
Lunar/Lunar/Tool/Lunar.m 311 ●●●●● patch | view | raw | blame | history
Lunar/Lunar/ViewController.m 71 ●●●●● patch | view | raw | blame | history
Lunar/Lunar/Tool/Lunar.h
@@ -159,8 +159,201 @@
@property (nonatomic, strong, readonly) EightChar *eightChar;
+ (instancetype)share;
- (instancetype)initWith:(NSInteger)year :(NSInteger)month :(NSInteger)day :(NSInteger)hour :(NSInteger)minute :(NSInteger)second;
- (Solar *)toSolar;
+ (instancetype)fromYmd:(NSInteger)lunarYear :(NSInteger)lunarMonth :(NSInteger)lunarDay;
+ (instancetype)fromYmdHms:(NSInteger)lunarYear :(NSInteger)lunarMonth :(NSInteger)lunarDay :(NSInteger)hour :(NSInteger)minute :(NSInteger)second;
+ (instancetype)fromDate:(NSDate *)date;
+ (CGFloat)nutationLon2:(CGFloat)t;
+ (CGFloat)eLon:(CGFloat)t :(NSInteger)n;
+ (CGFloat)gxcSunLon:(CGFloat)t;
+ (CGFloat)ev:(CGFloat)t;
+ (CGFloat)saLon:(CGFloat)t :(NSInteger)n;
+ (CGFloat)dtExt:(NSInteger)y :(NSInteger)jsd;
+ (CGFloat)dtCalc:(CGFloat)y;
+ (CGFloat)dtT:(CGFloat)t;
+ (CGFloat)saLonT:(CGFloat)w;
+ (CGFloat)qiLow:(CGFloat)w;
+ (CGFloat)saLonT2:(CGFloat)w;
+ (CGFloat)qiHigh:(CGFloat)w;
+ (CGFloat)calcJieQi:(CGFloat)jd;
+ (CGFloat)qiAccurate:(CGFloat)w;
+ (CGFloat)qiAccurate2:(CGFloat)jd;
- (void)computeJieQi;
- (void)computeYear;
- (void)computeMonth;
- (void)computeDay;
- (void)computeTime;
- (void)computeWeek;
- (void)compute;
- (NSString *)getYearGan;
- (NSString *)getYearGanByLiChun;
- (NSString *)getYearGanExact;
- (NSString *)getYearZhi;
- (NSString *)getYearZhiByLiChun;
- (NSString *)getYearZhiExact;
- (NSString *)getYearInGanZhi;
- (NSString *)getYearInGanZhiByLiChun;
- (NSString *)getYearInGanZhiExact;
- (NSString *)getMonthInGanZhi;
- (NSString *)getMonthInGanZhiExact;
- (NSString *)getMonthGan;
- (NSString *)getMonthGanExact;
- (NSString *)getMonthZhi;
- (NSString *)getMonthZhiExact;
- (NSString *)getDayInGanZhi;
- (NSString *)getDayInGanZhiExact;
- (NSString *)getDayInGanZhiExact2;
- (NSString *)getDayGan;
- (NSString *)getDayGanExact;
- (NSString *)getDayGanExact2;
- (NSString *)getDayZhi;
- (NSString *)getDayZhiExact;
- (NSString *)getDayZhiExact2;
- (NSString *)getYearShengXiao;
- (NSString *)getYearShengXiaoByLiChun;
- (NSString *)getYearShengXiaoExact;
- (NSString *)getMonthShengXiao;
- (NSString *)getDayShengXiao;
- (NSString *)getTimeShengXiao;
- (NSString *)getYearInChinese;
- (NSString *)getMonthInChinese;
- (NSString *)getDayInChinese;
- (NSString *)getTimeZhi;
- (NSString *)getTimeGan;
- (NSString *)getTimeInGanZhi;
- (NSString *)getSeason;
- (NSString *)getJie;
- (NSString *)getQi;
- (NSString *)getWeekInChinese;
- (NSString *)getXiu;
- (NSString *)getXiuLuck;
- (NSString *)getXiuSong;
- (NSString *)getZheng;
- (NSString *)getAnimal;
- (NSString *)getGong;
- (NSString *)getShou;
- (NSArray *)getFestivals;
- (NSArray *)getOtherFestivals;
- (NSString *)getPengZuGan;
- (NSString *)getPengZuZhi;
- (NSString *)getPositionXi;
- (NSString *)getDayPositionXi;
- (NSString *)getDayPositionXiDesc;
- (NSString *)getTimePositionXi;
- (NSString *)getTimePositionXiDesc;
- (NSString *)getDayPositionYangGui;
- (NSString *)getDayPositionYangGuiDesc;
- (NSString *)getTimePositionYangGui;
- (NSString *)getTimePositionYangGuiDesc;
- (NSString *)getDayPositionYinGui;
- (NSString *)getDayPositionYinGuiDesc;
- (NSString *)getTimePositionYinGui;
- (NSString *)getTimePositionYinGuiDesc;
- (NSString *)getPositionFu;
- (NSString *)getDayPositionFu;
- (NSString *)getDayPositionFuDesc;
- (NSString *)getTimePositionFu;
- (NSString *)getTimePositionFuDesc;
- (NSString *)getPositionCai;
- (NSString *)getDayPositionCai;
- (NSString *)getDayPositionCaiDesc;
- (NSString *)getTimePositionCai;
- (NSString *)getTimePositionCaiDesc;
- (NSString *)getChong;
- (NSString *)getDayChong;
- (NSString *)getTimeChong;
- (NSString *)getChongGan;
- (NSString *)getDayChongGan;
- (NSString *)getTimeChongGan;
- (NSString *)getChongGanTie;
- (NSString *)getDayChongGanTie;
- (NSString *)getTimeChongGanTie;
- (NSString *)getChongShengXiao;
- (NSString *)getDayChongShengXiao;
- (NSString *)getTimeChongShengXiao;
- (NSString *)getDayChongDesc;
- (NSString *)getTimeChongDesc;
- (NSString *)getDaySha;
- (NSString *)getTimeSha;
- (NSString *)getYearNaYin;
- (NSString *)getMonthNaYin;
- (NSString *)getDayNaYin;
- (NSString *)getTimeNaYin;
- (NSArray *)getBaZi;
- (NSArray *)getBaZiWuXing;
- (NSArray *)getBaZiNaYin;
- (NSArray *)getBaZiShiShenGan;
- (NSArray *)getBaZiShiShenZhi;
- (NSArray *)getBaZiShiShenYearZhi;
- (NSArray *)getBaZiShiShenMonthZhi;
- (NSArray *)getBaZiShiShenDayZhi;
- (NSArray *)getBaZiShiShenTimeZhi;
- (NSString *)getZhiXing;
- (NSString *)getDayTianShen;
- (NSString *)getTimeTianShen;
- (NSString *)getDayTianShenType;
- (NSString *)getTimeTianShenType;
- (NSString *)getDayTianShenLuck;
- (NSString *)getTimeTianShenLuck;
- (NSString *)getDayPositionTai;
- (NSString *)getMonthPositionTai;
- (NSArray *)getDayYi;
- (NSArray *)getTimeYi;
- (NSArray *)getDayJi;
- (NSArray *)getTimeJi;
- (NSArray *)getDayJiShen;
- (NSArray *)getDayXiongSha;
- (NSString *)getYueXiang;
- (NineStar *)getYearNineStar;
- (NineStar *)getMonthNineStar;
- (NineStar *)getDayNineStar;
- (NineStar *)getTimeNineStar;
- (NSDictionary *)getJieQiTable;
- (JieQi *)getNearJieQi:(BOOL)forward :(nullable NSArray *)conditions;
- (JieQi *)getNextJie;
- (JieQi *)getPrevJie;
- (JieQi *)getNextQi;
- (JieQi *)getPrevQi;
- (JieQi *)getNextJieQi;
- (JieQi *)getPrevJieQi;
- (NSString *)getJieQi;
- (JieQi *)getCurrentJieQi;
- (JieQi *)getCurrentJie;
- (JieQi *)getCurrentQi;
- (EightChar *)getEightChar;
- (Lunar *)next:(NSInteger)days;
- (NSString *)toString;
- (NSString *)toFullString;
- (NSString *)getYearXun;
- (NSString *)getYearXunByLiChun;
- (NSString *)getYearXunExact;
- (NSString *)getYearXunKong;
- (NSString *)getYearXunKongByLiChun;
- (NSString *)getYearXunKongExact;
- (NSString *)getMonthXun;
- (NSString *)getMonthXunExact;
- (NSString *)getMonthXunKong;
- (NSString *)getMonthXunKongExact;
- (NSString *)getDayXun;
- (NSString *)getDayXunExact;
- (NSString *)getDayXunExact2;
- (NSString *)getDayXunKong;
- (NSString *)getDayXunKongExact;
- (NSString *)getDayXunKongExact2;
- (NSString *)getTimeXun;
- (NSString *)getTimeXunKong;
- (ShuJiu *)getShuJiu;
- (Fu *)getFu;
- (NSString *)getLiuYao;
- (NSString *)getWuHou;
@end
/**
 * 阳历工具,基准日期为1901年1月1日,对应农历1900年十一月十一
@@ -218,7 +411,6 @@
@property (nonatomic, assign) NSInteger BASE_DAY_GAN_ZHI_INDEX;
@property (nonatomic, assign) NSInteger BASE_MONTH_ZHI_INDEX;
@property (nonatomic, assign) NSInteger BASE_WEEK_INDEX;
@property (nonatomic, strong) NSArray *LEAP_MONTH_YEAR;
@property (nonatomic, strong) NSArray *LUNAR_MONTH;
@property (nonatomic, strong) NSArray *XUN;
@@ -231,7 +423,6 @@
@property (nonatomic, strong) NSArray *POSITION_YIN_GUI;
@property (nonatomic, strong) NSArray *POSITION_FU;
@property (nonatomic, strong) NSArray *POSITION_CAI;
@property (nonatomic, strong) NSArray *POSITION_TAI_DAY;
@property (nonatomic, strong) NSArray *POSITION_TAI_MONTH;
@property (nonatomic, strong) NSArray *ZHI;
@@ -239,14 +430,10 @@
@property (nonatomic, strong) NSArray *ZHI_XING;
@property (nonatomic, strong) NSArray *TIAN_SHEN;
@property (nonatomic, strong) NSArray *YI_JI;
@property (nonatomic, strong) NSString *DAY_YI_JI;
@property (nonatomic, strong) NSString *TIME_YI_JI;
@property (nonatomic, strong) NSArray *SHEN_SHA;
@property (nonatomic, strong) NSString *DAY_SHEN_SHA;
@property (nonatomic, strong) NSDictionary *ZHI_TIAN_SHEN_OFFSET;// 月份地支对应天神偏移下标
@property (nonatomic, strong) NSDictionary *TIAN_SHEN_TYPE;// 天神类型:黄道,黑道
@property (nonatomic, strong) NSDictionary *TIAN_SHEN_TYPE_LUCK;// 天神类型吉凶
@@ -254,19 +441,14 @@
@property (nonatomic, strong) NSArray *PENG_ZU_ZHI;
@property (nonatomic, strong) NSArray *NUMBER;
@property (nonatomic, strong) NSArray *MONTH;
@property (nonatomic, strong) NSArray *SEASON;
@property (nonatomic, strong) NSArray *SHENG_XIAO;
@property (nonatomic, strong) NSArray *QI;
@property (nonatomic, strong) NSArray *JIE;
@property (nonatomic, strong) NSArray *DAY;
@property (nonatomic, strong) NSArray *YUE_XIANG;
@property (nonatomic, strong) NSDictionary *FESTIVAL;//农历日期对应的节日
@property (nonatomic, strong) NSDictionary *OTHER_FESTIVAL;//农历日期对应的非正式节日
@property (nonatomic, strong) NSDictionary *XIU;// 28星宿对照表,地支+星期
@property (nonatomic, strong) NSDictionary *XIU_LUCK;// 星宿对应吉凶
@property (nonatomic, strong) NSDictionary *XIU_SONG;// 星宿歌
@@ -315,6 +497,7 @@
@end
/**
 * 节假日
 */
@@ -333,8 +516,10 @@
@property (nonatomic, strong, readonly) NSString *target;
- (instancetype)initWith:(NSString *)day :(NSString *)name :(BOOL)word :(NSString *)target;
- (NSString *)toString;
@end
/**
 * 法定节假日工具(自2001年12月29日起)
@@ -444,6 +629,13 @@
//阴历
@property (nonatomic, strong, readonly) Lunar *lunar;
- (instancetype)initWith:(Yun *)yun :(NSInteger)index;
- (NSString *)getGanZhi;
- (NSString *)getXun;
- (NSString *)getXunKong;
- (NSArray *)getLiuNian;
- (NSArray *)getXiaoYun;
@end
@@ -462,6 +654,7 @@
+ (instancetype)share;
+ (instancetype)fromLunar:(Lunar *)lunar;
- (NSString *)toString;
- (NSString *)getYear;
- (NSString *)getMonth;
@@ -488,6 +681,23 @@
- (NSArray *)getDayShiShenZhi;
- (NSArray *)getTimeShiShenZhi;
- (NSString *)getTimeDiShi;
- (NSString *)getTaiYuan;
- (NSString *)getTaiYuanNaYin;
- (NSString *)getMingGong;
- (NSString *)getMingGongNaYin;
- (NSString *)getShenGong;
- (NSString *)getShenGongNaYin;
- (Yun *)getYun:(NSInteger)gender;
- (NSString *)getYearXun;
- (NSString *)getYearXunKong;
- (NSString *)getMonthXun;
- (NSString *)getMonthXunKong;
- (NSString *)getDayXun;
- (NSString *)getDayXunKong;
- (NSString *)getTimeXun;
- (NSString *)getTimeXunKong;
@end
@@ -505,7 +715,7 @@
@property (nonatomic, assign, readonly) NSInteger index;
- (instancetype)initWith:(NSString *)name :(NSInteger)index;
- (NSString *)toFullString;
@end
@@ -550,6 +760,10 @@
@property (nonatomic, strong, readonly) Lunar *lunar;
- (instancetype)initWith:(DaYun *)daYun :(NSInteger)index;
- (NSString *)getGanZhi;
- (NSString *)getXun;
- (NSString *)getXunKong;
- (NSArray *)getLiuYue;
@end
@@ -566,6 +780,10 @@
@property (nonatomic, strong, readonly) LiuNian *liuNian;
- (instancetype)initWith:(LiuNian *)liuNian :(NSInteger)index;
- (NSString *)getMonthInChinese;
- (NSString *)getGanZhi;
- (NSString *)getXun;
- (NSString *)getXunKong;
@end
@@ -597,6 +815,23 @@
- (instancetype)initWith:(NSInteger)index;
- (NSString *)getNumber;
- (NSString *)getColor;
- (NSString *)getWuXing;
- (NSString *)getPosition;
- (NSString *)getPositionDesc;
- (NSString *)getNameInXuanKong;
- (NSString *)getNameInBeiDou;
- (NSString *)getNameInQiMen;
- (NSString *)getNameInTaiYi;
- (NSString *)getLuckInQiMen;
- (NSString *)getLuckInXuanKong;
- (NSString *)getYinYangInQiMen;
- (NSString *)getTypeInTaiYi;
- (NSString *)getBaMenInQiMen;
- (NSString *)getSongInTaiYi;
- (NSString *)toString;
- (NSString *)toFullString;
@end
@@ -613,6 +848,8 @@
@property (nonatomic, assign, readonly) NSInteger index;
- (instancetype)initWith:(NSString *)name :(NSInteger)index;
- (NSString *)toString;
- (NSString *)toFullString;
@end
@@ -648,15 +885,31 @@
+ (instancetype)share;
- (instancetype)initWith:(NSInteger)year :(NSInteger)month :(NSInteger)day :(NSInteger)hour :(NSInteger)minute :(NSInteger)second;
+ (instancetype)fromYmd:(NSInteger)year :(NSInteger)month :(NSInteger)day;
+ (instancetype)fromYmdHms:(NSInteger)year :(NSInteger)month :(NSInteger)day :(NSInteger)hour :(NSInteger)minute :(NSInteger)second;
+ (instancetype)fromDate:(NSDate *)date;
+ (instancetype)fromJulianDay:(CGFloat)julianDay;
- (NSString *)toYmd;
- (NSString *)toYmdHms;
- (CGFloat)getJulianDay;
- (Lunar *)getLunar;
+ (NSArray *)fromBaZi:(NSString *)yearGanZhi :(NSString *)monthGanZhi :(NSString *)dayGanZhi :(NSString *)timeGanZhi;
+ (NSArray *)fromBaZiBySect:(NSString *)yearGanZhi :(NSString *)monthGanZhi :(NSString *)dayGanZhi :(NSString *)timeGanZhi :(NSInteger)sect;
- (NSString *)toString;
- (NSString *)toFullString;
- (BOOL)isLeapYear;
- (NSInteger)getWeek;
- (NSString *)getWeekInChinese;
- (NSString *)getXingZuo;
- (Solar *)next:(NSInteger)days;
- (Solar *)next:(NSInteger)days :(BOOL)onlyWorkday;
- (NSArray *)getFestivals;
- (NSArray *)getOtherFestivals;
@end
@@ -676,7 +929,14 @@
@property (nonatomic, assign) NSInteger MONTH_COUNT;
+ (instancetype)share;
- (instancetype)initWith:(NSInteger)year :(NSInteger)month;
- (NSString *)toString;
- (NSString *)toFullString;
+ (instancetype)fromYm:(NSInteger)year :(NSInteger)month;
+ (instancetype)fromDate:(NSDate *)date;
- (NSInteger)getIndex;
- (NSArray *)getMonths;
- (SolarHalfYear *)next:(NSInteger)halfYears;
@end
@@ -692,7 +952,13 @@
//月
@property (nonatomic, assign, readonly) NSInteger month;
- (instancetype)initWith:(NSInteger)year :(NSInteger)month;
- (NSString *)toString;
- (NSString *)toFullString;
+ (SolarMonth *)fromYm:(NSInteger)year :(NSInteger)month;
+ (SolarMonth *)fromDate:(NSDate *)date;
- (NSArray *)getDays;
- (SolarMonth *)next:(NSInteger)months;
@end
@@ -712,6 +978,14 @@
@property (nonatomic, assign) NSInteger MONTH_COUNT;
+ (instancetype)share;
- (instancetype)initWith:(NSInteger)year :(NSInteger)month;
- (NSString *)toString;
- (NSString *)toFullString;
+ (instancetype)fromYm:(NSInteger)year :(NSInteger)month;
+ (instancetype)fromDate:(NSDate *)date;
- (NSInteger)getIndex;
- (NSArray *)getMonths;
- (SolarSeason *)next:(NSInteger)seasons;
@end
@@ -733,6 +1007,17 @@
//星期几作为一周的开始,1234560分别代表星期一至星期天
@property (nonatomic, assign, readonly) NSInteger start;
- (instancetype)initWith:(NSInteger)year :(NSInteger)month :(NSInteger)day :(NSInteger)start;
- (NSString *)toString;
- (NSString *)toFullString;
+ (instancetype)fromYmd:(NSInteger)year :(NSInteger)month :(NSInteger)day :(NSInteger)start;
+ (instancetype)fromDate:(NSDate *)date :(NSInteger)start;
- (NSInteger)getIndex;
- (SolarWeek *)next:(NSInteger)weeks :(BOOL)separateMonth;
- (Solar *)getFirstDay;
- (Solar *)getFirstDayInMonth;
- (NSArray *)getDays;
- (NSArray *)getDaysInMonth;
@end
@@ -749,6 +1034,13 @@
@property (nonatomic, assign) NSInteger MONTH_COUNT;
+ (instancetype)share;
- (instancetype)initWith:(NSInteger)year;
- (NSString *)toString;
- (NSString *)toFullString;
+ (SolarYear *)fromYear:(NSInteger)year;
+ (SolarYear *)fromDate:(NSDate *)date;
- (NSArray *)getMonths;
- (SolarYear *)next:(NSInteger)years;
@end
@@ -777,6 +1069,9 @@
@property (nonatomic, assign, readonly) BOOL forward;
- (instancetype)initWith:(DaYun *)daYun :(NSInteger)index :(BOOL)forward;
- (NSString *)getGanZhi;
- (NSString *)getXun;
- (NSString *)getXunKong;
@end
@@ -803,7 +1098,11 @@
//阴历日期
@property (nonatomic, strong, readonly) Lunar *lunar;
- (instancetype)initWith:(EightChar *)eightChar :(NSInteger)gender;
- (Solar *)getStartSolar;
- (void)computeStart;
- (NSArray *)getDaYun;
@end
Lunar/Lunar/Tool/Lunar.m
@@ -165,6 +165,7 @@
        }
        lastDate = [LunarUtil getDaysOfMonth:lunarYear :lunarMonth];
    }
    return [[self alloc] initWith:lunarYear :lunarMonth :lunarDay :solar.hour :solar.minute :solar.second];
}
@@ -1178,15 +1179,6 @@
}
/**
 * 获取日喜神方位描述
 * @return string 喜神方位描述,如东北
 */
- (NSString *)getPositionXiDesc
{
  return [self getDayPositionXiDesc];
}
/**
 * 获取日喜神方位
 * @return string 喜神方位,如艮
 */
@@ -1226,24 +1218,6 @@
 * 获取日阳贵神方位
 * @return string 阳贵神方位,如艮
 */
- (NSString *)getPositionYangGui
{
  return [self getDayPositionYangGui];
}
/**
 * 获取日阳贵神方位描述
 * @return string 阳贵神方位描述,如东北
 */
- (NSString *)getPositionYangGuiDesc
{
  return [self getDayPositionYangGuiDesc];
}
/**
 * 获取日阳贵神方位
 * @return string 阳贵神方位,如艮
 */
- (NSString *)getDayPositionYangGui
{
  return [LunarUtil share].POSITION_YANG_GUI[_dayGanIndex + 1];
@@ -1274,24 +1248,6 @@
- (NSString *)getTimePositionYangGuiDesc
{
    return [LunarUtil share].POSITION_DESC[[self getTimePositionYangGui]];
}
/**
 * 获取日阴贵神方位
 * @return string 阴贵神方位,如艮
 */
- (NSString *)getPositionYinGui
{
    return [self getDayPositionYinGui];
}
/**
 * 获取日阴贵神方位描述
 * @return string 阴贵神方位描述,如东北
 */
- (NSString *)getPositionYinGuiDesc
{
    return [self getDayPositionYinGuiDesc];
}
/**
@@ -1340,15 +1296,6 @@
}
/**
 * 获取日福神方位描述
 * @return string 福神方位描述,如东北
 */
- (NSString *)getPositionFuDesc
{
    return [self getDayPositionFuDesc];
}
/**
 * 获取日福神方位
 * @return string 福神方位,如艮
 */
@@ -1391,15 +1338,6 @@
- (NSString *)getPositionCai
{
  return [self getDayPositionCai];
}
/**
 * 获取日财神方位描述
 * @return string 财神方位描述,如东北
 */
- (NSString *)getPositionCaiDesc
{
  return [self getDayPositionCaiDesc];
}
/**
@@ -1561,15 +1499,6 @@
}
/**
 * 获取冲描述
 * @return string 冲描述,如(壬申)猴
 */
- (NSString *)getChongDesc
{
  return [self getDayChongDesc];
}
/**
 * 获取日冲描述
 * @return string 日冲描述,如(壬申)猴
 */
@@ -1585,15 +1514,6 @@
- (NSString *)getTimeChongDesc
{
    return [NSString stringWithFormat:@"(%@%@)%@", [self getTimeChongGan], [self getTimeChong], [self getTimeChongShengXiao]];
}
/**
 * 获取煞
 * @return string 煞,如北
 */
- (NSString *)getSha
{
    return [self getDaySha];
}
/**
@@ -2053,7 +1973,7 @@
 * @param conditions array|null 过滤条件,如果设置过滤条件,仅返回匹配该名称的
 * @return JieQi|null 节气
 */
- (JieQi *)getNearJieQi:(BOOL)forward :(NSArray *)conditions
- (JieQi *)getNearJieQi:(BOOL)forward :(nullable NSArray *)conditions
{
    NSString *name = nil;
    Solar *near = nil;
@@ -2372,9 +2292,9 @@
    [s appendString:@"]("];
    [s appendFormat:@"%@", [self getDayPositionCaiDesc]];
    [s appendString:@") 冲["];
    [s appendFormat:@"%@", [self getChongDesc]];
    [s appendFormat:@"%@", [self getDayChongDesc]];
    [s appendString:@"] 煞["];
    [s appendFormat:@"%@", [self getSha]];
    [s appendFormat:@"%@", [self getDaySha]];
    [s appendString:@"]"];
    return s;
}
@@ -2918,19 +2838,19 @@
            d = 29;
        }
    } else if (9 <= month && month <= 12) {
        NSInteger v = [[LunarUtil share].LUNAR_MONTH[2*index + 1] integerValue];
        NSInteger v = [[LunarUtil share].LUNAR_MONTH[2*index+1] integerValue];
        NSInteger l = month - 9;
        if (((v >> l) & 0x01) == 1) {
            d = 29;
        }
    } else {
        NSInteger v = [[LunarUtil share].LUNAR_MONTH[2*index + 1] integerValue];
        NSInteger v = [[LunarUtil share].LUNAR_MONTH[2*index+1] integerValue];
        v = (v >> 4) & 0x0F;
        if (v != labs(month)) {
            d = 0;
        } else {
            d = 29;
            for (NSNumber * i in [LunarUtil share].LUNAR_MONTH) {
            for (NSNumber * i in [LunarUtil share].LEAP_MONTH_YEAR) {
                if ([i integerValue] == index) {
                    d = 30;
                    break;
@@ -3904,15 +3824,6 @@
}
/**
 * 获取阴历对象
 * @return Lunar 阴历对象
 */
- (Lunar *)getLunar
{
    return _lunar;
}
/**
 * 获取年柱
 * @return string 年柱
 */
@@ -4431,95 +4342,95 @@
    return [[LunarUtil share].NAYIN objectForKey:[self getShenGong]];
}
///**
// * 获取运
// * @param gender 性别,1男,0女
// * @return Yun 运
// */
//- (Yun *)getYun:(NSInteger)gender
//{
//  return new Yun($this, $gender);
//}
//
///**
// * 获取年柱所在旬
// * @return string 旬
// */
//- (NSString *)getYearXun
//{
//    return [_lunar getYearXunExact];
//}
//
///**
// * 获取年柱旬空(空亡)
// * @return string 旬空(空亡)
// */
//- (NSString *) getYearXunKong
//{
//    return [_lunar getYearXunKongExact];
//}
//
///**
// * 获取月柱所在旬
// * @return string 旬
// */
//- (NSString *)getMonthXun
//{
//    return [_lunar getMonthXunExact];
//}
//
///**
// * 获取月柱旬空(空亡)
// * @return string 旬空(空亡)
// */
//- (NSString *)getMonthXunKong
//{
//    return [_lunar getMonthXunKongExact];
//}
//
///**
// * 获取日柱所在旬
// * @return string 旬
// */
//- (NSString *)getDayXun
//{
//    if (_sect == 2) {
//        return [_lunar getDayXunExact2];
//    } else {
//        return [_lunar getDayXunExact];
//    }
//}
//
///**
// * 获取日柱旬空(空亡)
// * @return string 旬空(空亡)
// */
//- (NSString *)getDayXunKong
//{
//    if (_sect == 2) {
//        return [_lunar getDayXunKongExact2];
//    } else {
//        return [_lunar getDayXunKongExact];
//    }
//}
//
///**
// * 获取时柱所在旬
// * @return string 旬
// */
//- (NSString *)getTimeXun
//{
//    return [_lunar getTimeXun];
//}
//
///**
// * 获取时柱旬空(空亡)
// * @return string 旬空(空亡)
// */
//- (NSString *)getTimeXunKong
//{
//    return [_lunar getTimeXunKong];
//}
/**
 * 获取运
 * @param gender 性别,1男,0女
 * @return Yun 运
 */
- (Yun *)getYun:(NSInteger)gender
{
    return [[Yun alloc] initWith:self :gender];
}
/**
 * 获取年柱所在旬
 * @return string 旬
 */
- (NSString *)getYearXun
{
    return [_lunar getYearXunExact];
}
/**
 * 获取年柱旬空(空亡)
 * @return string 旬空(空亡)
 */
- (NSString *)getYearXunKong
{
    return [_lunar getYearXunKongExact];
}
/**
 * 获取月柱所在旬
 * @return string 旬
 */
- (NSString *)getMonthXun
{
    return [_lunar getMonthXunExact];
}
/**
 * 获取月柱旬空(空亡)
 * @return string 旬空(空亡)
 */
- (NSString *)getMonthXunKong
{
    return [_lunar getMonthXunKongExact];
}
/**
 * 获取日柱所在旬
 * @return string 旬
 */
- (NSString *)getDayXun
{
    if (_sect == 2) {
        return [_lunar getDayXunExact2];
    } else {
        return [_lunar getDayXunExact];
    }
}
/**
 * 获取日柱旬空(空亡)
 * @return string 旬空(空亡)
 */
- (NSString *)getDayXunKong
{
    if (_sect == 2) {
        return [_lunar getDayXunKongExact2];
    } else {
        return [_lunar getDayXunKongExact];
    }
}
/**
 * 获取时柱所在旬
 * @return string 旬
 */
- (NSString *)getTimeXun
{
    return [_lunar getTimeXun];
}
/**
 * 获取时柱旬空(空亡)
 * @return string 旬空(空亡)
 */
- (NSString *)getTimeXunKong
{
    return [_lunar getTimeXunKong];
}
@end
@@ -4928,15 +4839,6 @@
    return [NineStar share].SONG_TAI_YI[_index];
}
/**
 * 获取九星序号,从0开始
 * @return int 序号
 */
- (NSInteger)getIndex
{
    return _index;
}
- (NSString *)toString
{
    return [NSString stringWithFormat:@"%@%@%@%@", [self getNumber], [self getColor], [self getWuXing], [self getNameInBeiDou]];
@@ -4992,15 +4894,6 @@
 */
@implementation ShuJiu
- (instancetype)init
{
    self = [super init];
    if (self) {
    }
    return self;
}
- (instancetype)initWith:(NSString *)name :(NSInteger)index
{
    self = [super init];
@@ -5055,7 +4948,6 @@
        NSDateFormatter *form = [NSDateFormatter new];
        form.dateFormat = @"yyyy-MM-dd HH:mm:ss";
        _calendar = [form dateFromString:s];
    }
    return self;
}
@@ -5255,7 +5147,15 @@
    return l;
}
- (NSString *)toString
{
    NSMutableString *s = [NSMutableString string];
    [s appendFormat:@"%@", [self toYmdHms]];
    [s appendString:@" "];
    [s appendString:@"星期"];
    [s appendFormat:@"%@", [self getWeekInChinese]];
    return s;
}
- (NSString *)toFullString
{
@@ -6008,7 +5908,6 @@
    NSDateComponents *comps = [calendar components:NSCalendarUnitYear fromDate:date];
    return [[SolarYear alloc] initWith:comps.year];
}
/**
 * 获取本年的月份
Lunar/Lunar/ViewController.m
@@ -6,6 +6,7 @@
//
#import "ViewController.h"
#import "Lunar.h"
@interface ViewController ()
@@ -18,6 +19,76 @@
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor redColor];
//    Solar *d = [Solar fromYmdHms:2021 :4 :1 :0 :0 :0];
    Solar *d = [Solar fromDate:[NSDate new]];
    NSLog(@"公历:%@", [d toFullString]);
    Lunar *l = [d getLunar];
    NSLog(@"农历:%@", [l toString]);
    NSLog(@"年:%@年 属%@ %@", [l getYearInGanZhi], [l getYearShengXiao], [l getYearNaYin]);
    NSLog(@"月:%@月 属%@ %@", [l getMonthInGanZhi], [l getMonthShengXiao], [l getMonthNaYin]);
    NSLog(@"日:%@日 属%@ %@", [l getDayInGanZhi], [l getDayShengXiao], [l getDayNaYin]);
    NSLog(@"儒略日:%@", @([d getJulianDay]));
    NSLog(@"月名:%@", [l getSeason]);
    NSLog(@"月相:%@", [l getYueXiang]);
    NSLog(@"物候:%@", [l getWuHou]);
    NSLog(@"六曜:%@", [l getLiuYao]);
    NSLog(@"彭祖百忌:%@ %@", [l getPengZuGan], [l getPengZuZhi]);
    NSArray *arrDayYi = [l getDayYi];
    NSLog(@"每日宜:%@", arrDayYi.count == 0?@"无":[arrDayYi componentsJoinedByString:@" "]);
    NSArray *arrDayJi = [l getDayJi];
    NSLog(@"每日忌:%@", arrDayJi.count == 0?@"无":[arrDayJi componentsJoinedByString:@" "]);
    NSArray *arrDayJiShen = [l getDayJiShen];
    NSLog(@"吉神宜趋:%@", arrDayJiShen.count == 0?@"无":[arrDayJiShen componentsJoinedByString:@" "]);
    NSArray *arrDayXiongSha = [l getDayXiongSha];
    NSLog(@"凶煞宜忌:%@", arrDayXiongSha.count == 0?@"无":[arrDayXiongSha componentsJoinedByString:@" "]);
    NSLog(@"相冲:%@日 冲%@", [l getDayShengXiao], [l getDayChongDesc]);
    NSLog(@"岁煞:%@", [l getDaySha]);
    NSLog(@"星宿:%@(%@)", [l getXiu], [l getXiuLuck]);
    NSLog(@"星宿歌诀:%@", [l getXiuSong]);
    NSLog(@"贵神方位:阳贵神:%@ 阴贵神:%@", [l getDayPositionYangGuiDesc], [l getDayPositionYinGuiDesc]);
    NSLog(@"喜神方位:%@", [l getDayPositionXiDesc]);
    NSLog(@"福神方位:%@", [l getDayPositionFuDesc]);
    NSLog(@"财神方位:%@", [l getDayPositionCaiDesc]);
    NSLog(@"本月胎神:%@", [l getMonthPositionTai]);
    NSLog(@"今日胎神:%@", [l getDayPositionTai]);
    NSLog(@"值星:%@", [l getZhiXing]);
    NSLog(@"十二天神:%@(%@)%@", [l getDayTianShen], [l getDayTianShenType], [l getDayTianShenLuck]);
    NSLog(@"空亡所值:年=%@ 月=%@ 日=%@", [l getYearXunKong], [l getMonthXunKong], [l getDayXunKong]);
    NineStar *dayNineStar = [l getDayNineStar];
    [dayNineStar toFullString];
    NSLog(@"九星:%@%@-%@星(%@)-%@", [dayNineStar getNumber],[dayNineStar getColor], [dayNineStar getNameInTaiYi], [dayNineStar getWuXing], [dayNineStar getTypeInTaiYi]);
    NSLog(@"九星歌诀:%@", [dayNineStar getSongInTaiYi]);
    JieQi * pJQ = [l getPrevJieQi];
    NSLog(@"上一节气:%@ %@", pJQ.name, [pJQ.solar toString]);
    JieQi * nJQ = [l getNextJieQi];
    NSLog(@"下一节气:%@ %@", nJQ.name, [nJQ.solar toString]);
    NSArray *arrFestivals = [d getFestivals];
    NSLog(@"节日:%@", arrFestivals.count == 0?@"无":[arrFestivals componentsJoinedByString:@" "]);
    NSArray *arrOtherFestivals = [d getOtherFestivals];
    NSLog(@"纪念日:%@", arrOtherFestivals.count == 0?@"":[arrOtherFestivals componentsJoinedByString:@" "]);
    ShuJiu *shujiu = [l getShuJiu];
    NSLog(@"数九:%@", shujiu?[shujiu toFullString]:@"");
    Fu *fu = [l getFu];
    NSLog(@"数九:%@", fu?[fu toFullString]:@"");
}