def get_hou(d): lunar = sxtwl.Lunar() cal_day = lunar.getDayBySolar(d.year, d.month, d.day) # 计算甲干相合 gans = Gans(year=Gan[cal_day.Lyear2.tg], month=Gan[cal_day.Lmonth2.tg], day=Gan[cal_day.Lday2.tg]) zhis = Zhis(year=Zhi[cal_day.Lyear2.dz], month=Zhi[cal_day.Lmonth2.dz], day=Zhi[cal_day.Lday2.dz]) print("公历:", end='') print("{}年{}月{}日".format(cal_day.y, cal_day.m, cal_day.d), end='') Lleap = "闰" if cal_day.Lleap else "" print("\t农历:", end='') print("{}年{}{}月{}日 ".format(cal_day.Lyear0 + 1984, Lleap, ymc[cal_day.Lmc], rmc[cal_day.Ldi]), end='') print(' \t', end='') print('-'.join([''.join(item) for item in zip(gans, zhis)]), end='') print("\t杀师时:", end='') for item in shi_hous[zhis[2]]: print(item + zhi_time[item], end='') day_ganzhi = gans[2] + zhis[2] if day_ganzhi == year_hous[zhis[0]]: print(" \t年猴:{}年{}日".format(zhis[0], day_ganzhi), end=' ') if zhis[2] == yue_hous[ymc[cal_day.Lmc]]: print(" \t月罗:{}日".format(zhis[2]), end=' ') if day_ganzhi in tuple(ji_hous.values()): birthday = d for i in range(30): day_ = sxtwl.Lunar().getDayBySolar(birthday.year, birthday.month, birthday.day) if day_.qk != -1: ji = jis[(day_.qk + 3) // 6] break birthday += datetime.timedelta(days=-1) if day_ganzhi == ji_hous[ji]: print(" \t季猴:{}季{}日".format(ji, ji_hous[ji]), end=' ') print()
def getYMD(): #获得对应的农历 ymc = [ u"十一", u"十二", u"正", u"二", u"三", u"四", u"五", u"六", u"七", u"八", u"九", u"十" ] rmc = [ u"初一", u"初二", u"初三", u"初四", u"初五", u"初六", u"初七", u"初八", u"初九", u"初十", u"十一", u"十二", u"十三", u"十四", u"十五", u"十六", u"十七", u"十八", u"十九", u"二十", u"廿一", u"廿二", u"廿三", u"廿四", u"廿五", u"廿六", u"廿七", u"廿八", u"廿九", u"三十", u"卅一" ] Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"] Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"] ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"] numCn = ["天", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"] lunar = sxtwl.Lunar() year = datetime.datetime.now().year month = datetime.datetime.now().month rday = datetime.datetime.now().day day = lunar.getDayBySolar(year, month, rday) d = str(day.y) + "年" + str(day.m) + "月" + str(day.d) + "日" if day.Lleap: a = "润" + ymc[day.Lmc] + "月" + rmc[day.Ldi] + "日" else: a = ymc[day.Lmc] + "月" + rmc[day.Ldi] + "日" b = "星期" + numCn[day.week] c = Gan[day.Lyear2.tg] + Zhi[day.Lyear2.dz] + "年" + Gan[ day.Lmonth2.tg] + Zhi[day.Lmonth2.dz] + "月" + Gan[day.Lday2.tg] + Zhi[ day.Lday2.dz] + "日" txt = '今天日期:' + d + ', ' + b + '\n' + '中华农历: ' + a + ', ' + c return txt
def calendar(): ymc = ["冬", "腊", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十"] rmc = [ "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一" ] zmc = ["一", "二", "三", "四", "五", "六", "天"] nowdate = datetime.now() kaoyandate = datetime(2021, 12, 21) djs = (kaoyandate - nowdate).days - 1 y = nowdate.year m = nowdate.month d = nowdate.day zc = int(nowdate.strftime("%W")) - 1 z = zmc[nowdate.weekday()] lunar = sxtwl.Lunar() lunarday = lunar.getDayBySolar(y, m, d) lunardaychinese = f"{ymc[lunarday.Lmc]}月{rmc[lunarday.Ldi]}" if lunarday.Lleap: lunardaychinese = "闰" + lunardaychinese cal = f"{m}月{d}日,{lunardaychinese},寒假第{zc}周,星期{z}\n\n距离 2022 考研还有 {djs} 天" return cal
def translate_yangli(year, mon, day): import sxtwl # 日历库实例化 lunar = sxtwl.Lunar() # 1.阴历转阳历 solar_day = lunar.getDayByLunar(int(year), int(mon), int(day)) return '-'.join([str(solar_day.y), str(solar_day.m), str(solar_day.d)])
def update_SpringFestival(data,data_holiday_history,model_file,data_scaler_file): data['SDATE'] = pd.to_datetime(data['SDATE']) lunar = sxtwl.Lunar() start_day = lunar.getDayByLunar(data['SDATE'][0].year-1, 12, 20 , False) end_day = lunar.getDayByLunar(data['SDATE'][0].year, 1, 15 , False) start_time = str(start_day.y)+'/'+str(start_day.m)+'/'+str(start_day.d) end_time = str(end_day.y)+'/'+str(end_day.m)+'/'+str(end_day.d) date = pd.date_range(start_time,end_time) spring_result = [] result = [] try: if IsSpringFestival(data,date) == 1: print u"请输入本次数据中春节假期开始时间:(输入日期要求:年/月/日 如:2018/2/1):" start_input = raw_input() while is_valid_date(start_input) == 0: start_input = raw_input() print u"请输入本次数据中春节假期结束时间:(输入日期要求:年/月/日 如:2018/2/1):" end_input = raw_input() while is_valid_date(end_input) == 0: end_input = raw_input() date_input = pd.date_range(start_input,end_input) for temp in data['SDATE']: if temp in date_input: spring_result.append(1) else: spring_result.append(0) data['IsSpringFestival']=spring_result result = model_predict(model_file,data,0,data_scaler_file) update_file(date_input,data_holiday_history) return result except: print u"纠错失败" sys.exit()
def set_SpringFestival(data): data['SDATE'] = pd.to_datetime(data['SDATE']) lunar = sxtwl.Lunar() start_day = lunar.getDayByLunar( data['SDATE'][0].year - 1, configuration_files.springfestival_start_month, configuration_files.springfestival_start_date, False) end_day = lunar.getDayByLunar(data['SDATE'][0].year, configuration_files.springfestival_end_month, configuration_files.springfestival_end_date, False) start_time = str(start_day.y) + '/' + str(start_day.m) + '/' + str( start_day.d) end_time = str(end_day.y) + '/' + str(end_day.m) + '/' + str(end_day.d) date = pd.date_range(start_time, end_time) result = [] if IsSpringFestival(data, date) == 1: for temp in data['SDATE']: if temp in date: result.append(1) else: result.append(0) print u"本次数据中春节放假开始日期:", start_time print u"本次数据中春节放假结束日期:", end_time return result else: return [0] * len(data['SDATE'])
def getbazi(self, datetime, is_Lunar=False): date = time.strptime(datetime, '%Y-%m-%d %H:%M:%S') unix_time = time.mktime(date) data = time.localtime(unix_time) note = "阳历" + datetime + " 的八字为 " if is_Lunar: note = "农历" + time.strftime('%Y', data) + "年" + self.ymc[ (int(time.strftime('%m', data)) + 1) % 12] + "月" + self.rmc[int(time.strftime('%d', data)) - 1] + " " + time.strftime( '%H', data) + '点' + time.strftime( '%M', data) + '分' + time.strftime( '%S', data) + '秒 的八字為 ' ## 农历转阳历 lunar = sxtwl.Lunar() #实例化日历库 day = lunar.getDayByLunar(int(time.strftime('%Y', data)), int(time.strftime('%m', data)), int(time.strftime('%d', data))) datetime = str(day.y) + '-' + str(day.m) + '-' + str( day.d) + ' ' + time.strftime('%H', data) + ':' + time.strftime( '%M', data) + ':' + time.strftime('%S', data) date = time.strptime(datetime, '%Y-%m-%d %H:%M:%S') unix_time = time.mktime(date) data = time.localtime(unix_time) self.year = int(time.strftime('%Y', data)) ## 要加上24节气的判断,来确定所属月份 jieqi = self.read_json_file(str(self.year)) jieqi = json.loads(jieqi) newmonths = jieqi[::2] j = 1 for i in newmonths: jqtime = int( time.mktime(time.strptime(i['time'], '%Y-%m-%d %H:%M:%S'))) if j < 12: if int(unix_time) >= jqtime: newmonth = j else: if int(unix_time) < jqtime: newmonth = j j += 1 self.month = int(time.strftime('%m', data)) self.day = int(time.strftime('%d', data)) self.hour = int(time.strftime('%H', data)) self.century = self.year // 100 + 1 self.is_run = self.comrun(self.year) y = self.getyear(self.year) m = self.getmonth(newmonth) d = self.getday(self.day) h = self.gethour(self.hour) return note + y + m + d + h
def save2csv(self): lunar = sxtwl.Lunar() # 实例化日历库 fileName = 'day_holiday_info' + '.csv' print('保存到csv文件(%s)中...' % (fileName, )) with open(os.path.join(sys.path[0], fileName), 'w', encoding='utf-8-sig', newline='') as csvfile: fieldnames = [ 'day', 'lunar_day_name', 'lunar_day', 'week_day', 'week_day_name', 'day_type', 'day_type_id' ] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() start_date = self._start_date while (self._end_date - start_date).days > 0: day_str = self.date2str(start_date) start_date_num = int(day_str) day = lunar.getDayBySolar(int(day_str[0:4]), int(day_str[4:6]), int(day_str[6:])) if start_date_num in self._holiday_not_work: day_type = '节假日' day_type_id = '1' elif start_date_num in self._holiday_work: day_type = '工作日(节日)' day_type_id = '4' elif start_date.weekday( ) >= 5 and start_date_num not in self._weekend_work: day_type = '双休日' day_type_id = '3' else: day_type = '工作日' day_type_id = '2' writer.writerow({ 'day': start_date_num, 'lunar_day_name': self._ymc[day.Lmc] + u"月" + self._rmc[day.Ldi] + ("" if '初' in self._rmc[day.Ldi] else u"日"), 'lunar_day': self._ymc_num[day.Lmc] + self._rmc_num[day.Ldi], 'week_day': start_date.weekday() + 1, 'week_day_name': self.get_week_day(start_date), 'day_type': day_type, 'day_type_id': day_type_id }) start_date = start_date + datetime.timedelta(days=1) print('保存完毕...')
def parse_dates(): lunar = sxtwl.Lunar() res = [] for i in range(1, 13): month = lunar.yueLiCalc(2019, i) days = month.days for day in days: res.append(get_day(day)) with open('dates.json', 'w') as f: f.write(json.dumps(res)) print('parse dates successfully')
def check_birth(item): date = time.localtime() name, month, day, flag = item.strip('\n').split() if int(flag) == 1: if int(month) == date.tm_mon and int(day) == date.tm_mday: return True else: lunar = sxtwl.Lunar() day = lunar.getDayByLunar(date.tm_year, int(month), int(day)) if day.m == date.tm_mon and day.d == date.tm_mday: return True return False
def get_lunar_calendar(time): """ :return: 几月几日(农历,字符串) """ lunar = sxtwl.Lunar() today = str(time) # 如 2019-08-08 today_list = today.split('-') # ['2019', '08', '08'] lunar_day = lunar.getDayBySolar((int)(today_list[0]), (int)(today_list[1]), (int)(today_list[2])) # 输入年月日 if lunar_day.Lleap: # 判断是否为润年 return (ymc[lunar_day.Lmc] + rmc[lunar_day.Ldi]).encode("utf-8") else: return (ymc[lunar_day.Lmc] + rmc[lunar_day.Ldi]).encode("utf-8")
def Calc_BaZi(calc_Y, calc_M, calc_D, calc_T): lunar = sxtwl.Lunar() day = lunar.getDayBySolar(calc_Y, calc_M, calc_D) # 年 NL_year = Gan[day.Lyear2.tg] + Zhi[day.Lyear2.dz] # 月 NL_mon = Gan[day.Lmonth2.tg] + Zhi[day.Lmonth2.dz] # 日 NL_day = Gan[day.Lday2.tg] + Zhi[day.Lday2.dz] # 时辰 gz = lunar.getShiGz(day.Lday2.tg, calc_T) NL_Time = Gan[gz.tg] + Zhi[gz.dz] return NL_year + NL_mon + NL_day + NL_Time
def solar_to_lunar(solar_date): # 日历库实例化 lunar = sxtwl.Lunar() today = str(solar_date) # 如 2019-08-08 today_list = today.split('-') # ['2019', '08', '08'] lunar_day = lunar.getDayBySolar((int)(today_list[0]), (int)(today_list[1]), (int)(today_list[2])) # 输入年月日 # 判断是否为润年 if (lunar_day.Lleap): # print("润{0}月{1}".format(ymc[lunar_day.Lmc], rmc[lunar_day.Ldi])) return "润{0}月{1}".format(ymc[lunar_day.Lmc], rmc[lunar_day.Ldi]) else: # print("{0}月{1}".format(ymc[lunar_day.Lmc], rmc[lunar_day.Ldi])) return "{0}月{1}".format(ymc[lunar_day.Lmc], rmc[lunar_day.Ldi])
def ShowMoon(self): lunar = sxtwl.Lunar() # 实例化日历库 ymc = [ u"十一", u"十二", u"正", u"二", u"三", u"四", u"五", u"六", u"七", u"八", u"九", u"十" ] rmc = [ u"初一", u"初二", u"初三", u"初四", u"初五", u"初六", u"初七", u"初八", u"初九", u"初十", u"十一", u"十二", u"十三", u"十四", u"十五", u"十六", u"十七", u"十八", u"十九", u"二十", u"廿一", u"廿二", u"廿三", u"廿四", u"廿五", u"廿六", u"廿七", u"廿八", u"廿九", u"三十", u"卅一" ] day = lunar.getDayBySolar(self.year, self.month, self.day) # print(u"公历:", day.y, "年", day.m, "月", day.d, "日") if day.Lleap: print("农历:润", ymc[day.Lmc], "月", rmc[day.Ldi], "日") else: print("农历:", ymc[day.Lmc], "月", rmc[day.Ldi])
def translate_yinli(today): import sxtwl # 日历中文索引 ymc = [ u"11", u"12", u"01", u"02", u"03", u"04", u"05", u"06", u"07", u"08", u"09", u"10" ] rmc = [u"01", u"02", u"03", u"04", u"05", u"06", u"07", u"08", u"09", u"10", \ u"11", u"12", u"13", u"14", u"15", u"16", u"17", u"18", u"19", \ u"20", u"21", u"22", u"23", u"24", u"25", u"26", u"27", u"28", u"29", u"30"] # 阴历没有31天 # 日历库实例化 lunar = sxtwl.Lunar() # 2.阳历转阴历 today_list = today.split('-') # ['2019', '08', '08'] lunar_day = lunar.getDayBySolar((int)(today_list[0]), (int)(today_list[1]), (int)(today_list[2])) # 输入年月日 return ymc[lunar_day.Lmc], rmc[lunar_day.Ldi]
def get_day(day): Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"] Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"] ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"] numCn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"] Week = ["日", "一", "二", "三", "四", "五", "六"] jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑","白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪"] ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十" ] rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"] info = {} info['month'] = day.m info['day'] = day.d info['week'] = Week[day.week] year = sxtwl.Lunar().getYearCal(day.Lyear0 + 1984) info['n_year'] = Gan[year.yearGan] + Zhi[year.yearZhi] info['n_month'] = ymc[day.Lmc] info['n_day'] = rmc[day.Ldi] if (day.qk >= 0): info['jq'] = jqmc[day.jqmc] else: info['jq'] = '' return info
def run(self): lunar = sxtwl.Lunar() # 实例化日历库 ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十"] rmc = [ "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一" ] year = int(time.strftime("%Y")) month = int(time.strftime("%m")) day = int(time.strftime("%d")) days = lunar.getDayBySolar(year, month, day) print("公历:", days.y, "年", days.m, "月", days.d, "日") if days.Lleap: nongli_info = "农历: 润" + ymc[days.Lmc] + "月" + rmc[days.Ldi] else: nongli_info = "农历: " + ymc[days.Lmc] + "月" + rmc[days.Ldi] self.nonglisignal.emit(nongli_info) while True: self.timesignal.emit(str(time.strftime("%Y-%m-%d %H:%M:%S"))) time.sleep(1)
def calculation(Y,M,D,H): # Y = int(input('输入阳历年:')) # M = int(input('输入月份:')) # D = int(input('输入日期:')) # H = int(input('输入时间:')) lunar = sxtwl.Lunar() #实例化日历库 day = lunar.getDayBySolar(int(Y),int(M), int(D)) # 查询年月日 gz = lunar.getShiGz(day.Lday2.tg, int(H)) Branch = [Gan[day.Lyear2.tg],Zhi[day.Lyear2.dz],Gan[day.Lmonth2.tg],Zhi[day.Lmonth2.dz],Gan[day.Lday2.tg], Zhi[day.Lday2.dz],Gan[gz.tg], Zhi[gz.dz]] elements=element(Branch) elements =Elements.elements(elements) # print("公历:", day.y, "年", day.m, "月", day.d, "日") if day.Lleap: Lunar_c = "润"+ymc[day.Lmc]+"月 "+rmc[day.Ldi]+"日" else: Lunar_c = ymc[day.Lmc]+"月 "+rmc[day.Ldi]+"日" # print("儒略日:JD", sxtwl.J2000 + day.d0) # print("星期", numCn[day.week]) # print(Gan[day.Lyear2.tg], Zhi[day.Lyear2.dz], "年", Gan[day.Lmonth2.tg],Zhi[day.Lmonth2.dz], "月", \ # Gan[day.Lday2.tg], Zhi[day.Lday2.dz], "日", Gan[gz.tg], Zhi[gz.dz], "时") # print(Branch) # print(elements) return Lunar_c,Branch,elements
Gans = collections.namedtuple("Gans", "year month day time") Zhis = collections.namedtuple("Zhis", "year month day time") if options.b: gans = Gans(year=options.year[0], month=options.month[0], day=options.day[0], time=options.time[0]) zhis = Gans(year=options.year[1], month=options.month[1], day=options.day[1], time=options.time[1]) else: lunar = sxtwl.Lunar() if options.g: day = lunar.getDayBySolar(int(options.year), int(options.month), int(options.day)) else: day = lunar.getDayByLunar(int(options.year), int(options.month), int(options.day), options.r) gz = lunar.getShiGz(day.Lday2.tg, int(options.time)) # 计算甲干相合 gans = Gans(year=Gan[day.Lyear2.tg], month=Gan[day.Lmonth2.tg], day=Gan[day.Lday2.tg], time=Gan[gz.tg]) zhis = Zhis(year=Zhi[day.Lyear2.dz],
def generate_base_holidays(year): year_str = str(year) lunar = sxtwl.Lunar() chinese_new_year = lunar.getDayByLunar(year, 1, 1, False) dragon_boat_festival = lunar.getDayByLunar(year, 5, 5, False) mid_autumn_festival = lunar.getDayByLunar(year, 8, 15, False) old_age = lunar.getDayByLunar(year, 9, 9, False) lantern_festival = lunar.getDayByLunar(year, 1, 15, False) dragon_head_up = lunar.getDayByLunar(year, 2, 2, False) qixi_festival = lunar.getDayByLunar(year, 7, 7, False) ghost_festival = lunar.getDayByLunar(year, 7, 15, False) double_ninth_festival = lunar.getDayByLunar(year, 9, 9, False) winter_clothes_festival = lunar.getDayByLunar(year, 10, 1, False) next_metaverse_festival = lunar.getDayByLunar(year, 10, 15, False) laba_festival = lunar.getDayByLunar(year, 12, 8, False) # 加减推算 chinese_new_year_date = datetime(year, chinese_new_year.m, chinese_new_year.d) little_night_festival = chinese_new_year_date - timedelta(days=2) new_year_eve = chinese_new_year_date - timedelta(days=1) holidays = [ # 法定节日 { "name": "元旦", "date": year_str + "-" + "1-1", "isRest": 1, "remark": "法定节日" }, { "name": "春节", "date": year_str + "-" + str(chinese_new_year.m) + "-" + str(chinese_new_year.d), "isRest": 1, "remark": "法定节日" }, { "name": "清明节", "date": year_str + "-" + "4-5", "isRest": 1, "remark": "法定节日" }, { "name": "劳动节", "date": year_str + "-" + "5-1", "isRest": 1, "remark": "法定节日" }, { "name": "端午节", "date": year_str + "-" + str(dragon_boat_festival.m) + "-" + str(dragon_boat_festival.d), "isRest": 1, "remark": "法定节日" }, { "name": "中秋节", "date": year_str + "-" + str(mid_autumn_festival.m) + "-" + str(mid_autumn_festival.d), "isRest": 1, "remark": "法定节日" }, { "name": "国庆节", "date": year_str + "-" + "10-1", "isRest": 1, "remark": "法定节日" }, { "name": "中国人民警察节", "date": year_str + "-" + "1-10", "isRest": 1, "remark": "法定节日" }, { "name": "妇女节", "date": year_str + "-" + "3-8", "isRest": 1, "remark": "法定节日" }, { "name": "植树节", "date": year_str + "-" + "3-12", "isRest": 1, "remark": "法定节日" }, { "name": "青年节", "date": year_str + "-" + "5-4", "isRest": 1, "remark": "法定节日" }, { "name": "护士节", "date": year_str + "-" + "5-12", "isRest": 1, "remark": "法定节日" }, { "name": "全国科技工作者日", "date": year_str + "-" + "5-30", "isRest": 1, "remark": "法定节日" }, { "name": "儿童节", "date": year_str + "-" + "6-1", "isRest": 1, "remark": "法定节日" }, { "name": "建军节", "date": year_str + "-" + "8-1", "isRest": 1, "remark": "法定节日" }, { "name": "教师节", "date": year_str + "-" + "9-10", "isRest": 1, "remark": "法定节日" }, { "name": "老年节", "date": year_str + "-" + str(old_age.m) + "-" + str(old_age.d), "isRest": 1, "remark": "法定节日" }, { "name": "中国医师节", "date": year_str + "-" + "11-3", "isRest": 1, "remark": "法定节日" }, { "name": "记者节", "date": year_str + "-" + "11-8", "isRest": 1, "remark": "法定节日" }, # 纪念日 { "name": "二七纪念日", "date": year_str + "-" + "2-7", "isRest": 1, "remark": "纪念日" }, { "name": "全民国家安全教育日", "date": year_str + "-" + "4-15", "isRest": 1, "remark": "纪念日" }, { "name": "中国航天日", "date": year_str + "-" + "4-24", "isRest": 1, "remark": "纪念日" }, { "name": "中国品牌日", "date": year_str + "-" + "5-10", "isRest": 1, "remark": "纪念日" }, { "name": "全国防灾减灾日", "date": year_str + "-" + "5-12", "isRest": 1, "remark": "纪念日" }, { "name": "中国旅游日", "date": year_str + "-" + "5-19", "isRest": 1, "remark": "纪念日" }, { "name": "全国助残日", "date": get_date_by_number(year, 5, 1, 3, "Sun"), "isRest": 1, "remark": "纪念日" }, { "name": "五卅纪念日", "date": year_str + "-" + "5-30", "isRest": 1, "remark": "纪念日" }, { "name": "文化和自然遗产日", "date": get_date_by_number(year, 6, 1, 2, "Sat"), "isRest": 1, "remark": "纪念日" }, { "name": "全国土地日", "date": year_str + "-" + "6-25", "isRest": 1, "remark": "纪念日" }, { "name": "抗日战争纪念日", "date": year_str + "-" + "7-7", "isRest": 1, "remark": "纪念日" }, { "name": "中国航海日", "date": year_str + "-" + "7-11", "isRest": 1, "remark": "纪念日" }, { "name": "全民健身日", "date": year_str + "-" + "8-8", "isRest": 1, "remark": "纪念日" }, { "name": "残疾预防日", "date": year_str + "-" + "8-25", "isRest": 1, "remark": "纪念日" }, { "name": "抗日战争胜利纪念日", "date": year_str + "-" + "9-3", "isRest": 1, "remark": "法定节日" }, { "name": "九一八纪念日", "date": year_str + "-" + "9-18", "isRest": 1, "remark": "纪念日" }, { "name": "全民国防教育日", "date": get_date_by_number(year, 9, 1, 3, "Sat"), "isRest": 1, "remark": "纪念日" }, { "name": "烈士纪念日", "date": year_str + "-" + "9-30", "isRest": 1, "remark": "纪念日" }, { "name": "国家扶贫日", "date": year_str + "-" + "10-17", "isRest": 1, "remark": "纪念日" }, { "name": "全国交通安全日", "date": year_str + "-" + "12-2", "isRest": 1, "remark": "纪念日" }, { "name": "国家宪法日", "date": year_str + "-" + "12-4", "isRest": 1, "remark": "纪念日" }, { "name": "全国法制宣传日", "date": year_str + "-" + "12-4", "isRest": 1, "remark": "纪念日" }, { "name": "南京大屠杀公祭日", "date": year_str + "-" + "12-13", "isRest": 1, "remark": "纪念日" }, # 传统节日 { "name": "元宵节", "date": year_str + "-" + str(lantern_festival.m) + "-" + str(lantern_festival.d), "isRest": 1, "remark": "传统节日" }, { "name": "龙抬头", "date": year_str + "-" + str(dragon_head_up.m) + "-" + str(dragon_head_up.d), "isRest": 1, "remark": "传统节日" }, { "name": "七夕节", "date": year_str + "-" + str(qixi_festival.m) + "-" + str(qixi_festival.d), "isRest": 1, "remark": "传统节日" }, { "name": "中元节", "date": year_str + "-" + str(ghost_festival.m) + "-" + str(ghost_festival.d), "isRest": 1, "remark": "传统节日" }, { "name": "重阳节", "date": year_str + "-" + str(double_ninth_festival.m) + "-" + str(double_ninth_festival.d), "isRest": 1, "remark": "传统节日" }, { "name": "寒衣节", "date": year_str + "-" + str(winter_clothes_festival.m) + "-" + str(winter_clothes_festival.d), "isRest": 1, "remark": "传统节日" }, { "name": "下元节", "date": year_str + "-" + str(next_metaverse_festival.m) + "-" + str(next_metaverse_festival.d), "isRest": 1, "remark": "传统节日" }, { "name": "腊八节", "date": year_str + "-" + str(laba_festival.m) + "-" + str(laba_festival.d), "isRest": 1, "remark": "传统节日" }, { "name": "小年夜", "date": little_night_festival.strftime("%Y-%-m-%d"), "isRest": 1, "remark": "传统节日" }, { "name": "除夕夜", "date": new_year_eve.strftime("%Y-%-m-%d"), "isRest": 1, "remark": "传统节日" }, { "name": "情人节", "date": year_str + "-" + "2-14", "isRest": 1, "remark": "世界节日" }, { "name": "白色情人节", "date": year_str + "-" + "3-14", "isRest": 1, "remark": "世界节日" }, { "name": "国际消费者权益日", "date": year_str + "-" + "3-15", "isRest": 1, "remark": "世界节日" }, { "name": "世界睡眠日", "date": year_str + "-" + "3-21", "isRest": 1, "remark": "世界节日" }, { "name": "愚人节", "date": year_str + "-" + "4-1", "isRest": 1, "remark": "世界节日" }, { "name": "世界卫生日", "date": year_str + "-" + "4-7", "isRest": 1, "remark": "世界节日" }, { "name": "世界地球日", "date": year_str + "-" + "4-22", "isRest": 1, "remark": "世界节日" }, { "name": "母亲节", "date": get_date_by_number(year, 5, 1, 2, "Sun"), "isRest": 1, "remark": "世界节日" }, { "name": "父亲节", "date": get_date_by_number(year, 6, 1, 3, "Sun"), "isRest": 1, "remark": "世界节日" }, { "name": "平安夜", "date": year_str + "-" + "12-24", "isRest": 1, "remark": "世界节日" }, { "name": "圣诞节", "date": year_str + "-" + "12-25", "isRest": 1, "remark": "世界节日" } ] holidays.extend(fetch_jieqi(year_str)) return holidays
def __init__(self): self.lunar = sxtwl.Lunar() # 实例化日历库
def input_calendar(self): symbol = '年月日 \/.' if self.year_click_flag == True: date_string = self.clickedyear # self.textLine.setText(date_string) else: date_string = self.textLine.text() date_list = self.go_split(date_string, symbol) if len(date_list) == 3: y = int(date_list[0]) self.choose_year = str(y) m = int(date_list[1]) d = int(date_list[2]) day = lunar.getDayBySolar(y, m, d) gongli = str(day.y) + "-" + str(day.m) + "-" + str(day.d) if day.Lleap: nongli = "润" + ymc[day.Lmc] + "月" + rmc[day.Ldi] + "日" else: nongli = ymc[day.Lmc] + "月" + rmc[day.Ldi] + "日" ganzhi = Gan[day.Lyear2.tg] + Zhi[day.Lyear2.dz] + "年" + Gan[day.Lmonth2.tg] + Zhi[day.Lmonth2.dz] + "月" + \ Gan[day.Lday2.tg] + Zhi[day.Lday2.dz] + "日" year = lunar.getYearCal(y) Shx = ShX[year.ShX] nianhao = self.queryEmperorYear(y) rulue = sxtwl.J2000 + day.d0 elif len(date_list) == 2: y = int(date_list[0]) self.choose_year = str(y) m = int(date_list[1]) month = sxtwl.Lunar().yueLiCalc(y, m) gongli = date_string nongli = "条件不足" ganzhi = Gan[month.yearGan] + Zhi[month.yearZhi] + "年" Shx = ShX[month.ShX] nianhao = self.queryEmperorYear(y) rulue = "未知" elif len(date_list) == 1: y = int(date_list[0]) self.choose_year = str(y) year = lunar.getYearCal(y) print(y) gongli = date_string nongli = "条件不足" ganzhi = Gan[year.yearGan] + Zhi[year.yearZhi] + "年" Shx = ShX[year.ShX] nianhao = self.queryEmperorYear(y) rulue = "未知" else: Shx = "未知" gongli = "未知" nongli = "未知" nianhao = "未知" ganzhi = "未知" rulue = "未知" self.labelText.setText(Shx) self.labelText1.setText(gongli) self.labelText2.setText(nongli) self.labelText3.setText(nianhao) self.labelText4.setText(ganzhi) self.labelText5.setText(str(rulue) + "日")
import sxtwl lunar = sxtwl.Lunar() #实例化日历库 year = int(input("请输入年份,例:2020\n")) ymc = [ u"十一", u"十二", u"正", u"二", u"三", u"四", u"五", u"六", u"七", u"八", u"九", u"十" ] rmc = [ u"初一", u"初二", u"初三", u"初四", u"初五", u"初六", u"初七", u"初八", u"初九", u"初十", u"十一", u"十二", u"十三", u"十四", u"十五", u"十六", u"十七", u"十八", u"十九", u"二十", u"廿一", u"廿二", u"廿三", u"廿四", u"廿五", u"廿六", u"廿七", u"廿八", u"廿九", u"三十", u"卅一" ] #day = lunar.getDayBySolar(1996, 2, 12) # #print(u"公历:", day.y, u"年", day.m, u"月", day.d, u"日") #if day.Lleap: # print(u"阴历:润", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日") #else: # print(u"阴历:", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日") day = lunar.getDayByLunar(year, 12, 24) print(u"公历:", day.y, u"年", day.m, u"月", day.d, u"日") if day.Lleap: print(u"阴历:润", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日") else: print(u"阴历:", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")
def __init__(self, name): self._name = name self._entries = {} self.lunar = sxtwl.Lunar() #实例化日历库
def is_spring_day(self, year: int): lunar = sxtwl.Lunar() for i in [3, 4, 5, 6, 7, 8]: day = lunar.getDayBySolar(year, 2, i) if day.jqmc: return year, 2, i
Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"] Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"] ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"] numCn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"] jqmc = [ "冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪" ] ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十"] rmc = [ "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一" ] month = sxtwl.Lunar().yueLiCalc(2017, 12) #打印做一个中间转换 def log(*arg): s = "" for v in arg: s += str(v) print(s.decode('UTF-8').encode(type)) log(month.y, "年", month.m, "月") log(Gan[month.yearGan], Zhi[month.yearZhi], "年") log("生肖:", ShX[month.ShX]) days = month.days
def festival_date(self, year, festival): # 日曆庫實例化 lunar = sxtwl.Lunar() for y in range(self.roc_before5years, self.roc_year + 1): #陰曆轉陽曆 if self.festival == 1: lunarday = '{}-01-01'.format(int(y) + 1911) #農曆春節 elif self.festival == 2: lunarday = '{}-05-05'.format(int(y) + 1911) #農曆端午節 elif self.festival == 3: lunarday = '{}-08-15'.format(int(y) + 1911) #農曆中秋節 lunarday_list = lunarday.split('-') solar_day = lunar.getDayByLunar((int)(lunarday_list[0]), (int)(lunarday_list[1]), (int)(lunarday_list[2])) importfestival = "{0}-{1}-{2}".format(solar_day.y, solar_day.m, solar_day.d) festival_day = datetime.strptime(importfestival, "%Y-%m-%d") b1w_end = festival_day - timedelta(days=1) #前一周結束日期 b1w_start = b1w_end - timedelta(days=6) #前一周開始日期 b2w_end = b1w_start - timedelta(days=1) #前兩周結束日期 b2w_start = b2w_end - timedelta(days=6) #前兩周開始日期 b3w_end = b2w_start - timedelta(days=1) #前三周結束日期 b3w_start = b3w_end - timedelta(days=6) #前三周開始日期 b4w_end = b3w_start - timedelta(days=1) #前四周結束日期 b4w_start = b4w_end - timedelta(days=6) #前四周開始日期 a1w_start = festival_day #節後一周開始日期暨節日當天 a1w_end = festival_day + timedelta(days=6) #節後一周結束日期 a2w_start = a1w_end + timedelta(days=1) #節後二周開始日期天 a2w_end = a2w_start + timedelta(days=6) #節後二周結束日期 a3w_start = a2w_end + timedelta(days=1) #節後三周開始日期 a3w_end = a3w_start + timedelta(days=6) #節後三周結束日期 a4w_start = a3w_end + timedelta(days=1) #節後四周開始日期 a4w_end = a4w_start + timedelta(days=6) #節後四周結束日期 begin_date = b4w_start last_date = a4w_end self.all_date_list.append([begin_date.date(), last_date.date()]) if y == self.roc_year: #今年度新增最近1日的日期區間 if self.festival == 1: self.Chinese_New_Year_dict[str(y)] = [ '{0}~{1}'.format(b4w_start.date(), b4w_end.date()), '{0}~{1}'.format(b3w_start.date(), b3w_end.date()), '{0}~{1}'.format(b2w_start.date(), b2w_end.date()), '{0}~{1}'.format(b1w_start.date(), b1w_end.date()), '{0}~{1}'.format(a1w_start.date(), a1w_end.date()), '{0}~{1}'.format(a2w_start.date(), a2w_end.date()), '{0}~{1}'.format(a3w_start.date(), a3w_end.date()), '{0}~{1}'.format(a4w_start.date(), a4w_end.date()), '{0}~{1}'.format(self.yesterday, self.yesterday) ] elif self.festival == 2: self.Dragon_Boat_Festival_dict[str(y)] = [ '{0}~{1}'.format(b4w_start.date(), b4w_end.date()), '{0}~{1}'.format(b3w_start.date(), b3w_end.date()), '{0}~{1}'.format(b2w_start.date(), b2w_end.date()), '{0}~{1}'.format(b1w_start.date(), b1w_end.date()), '{0}~{1}'.format(a1w_start.date(), a1w_end.date()), '{0}~{1}'.format(a2w_start.date(), a2w_end.date()), '{0}~{1}'.format(a3w_start.date(), a3w_end.date()), '{0}~{1}'.format(a4w_start.date(), a4w_end.date()), '{0}~{1}'.format(self.yesterday, self.yesterday) ] elif self.festival == 3: self.Mid_Autumn_Festival_dict[str(y)] = [ '{0}~{1}'.format(b4w_start.date(), b4w_end.date()), '{0}~{1}'.format(b3w_start.date(), b3w_end.date()), '{0}~{1}'.format(b2w_start.date(), b2w_end.date()), '{0}~{1}'.format(b1w_start.date(), b1w_end.date()), '{0}~{1}'.format(a1w_start.date(), a1w_end.date()), '{0}~{1}'.format(a2w_start.date(), a2w_end.date()), '{0}~{1}'.format(a3w_start.date(), a3w_end.date()), '{0}~{1}'.format(a4w_start.date(), a4w_end.date()), '{0}~{1}'.format(self.yesterday, self.yesterday) ] else: if self.festival == 1: self.Chinese_New_Year_dict[str(y)] = [ '{0}~{1}'.format(b4w_start.date(), b4w_end.date()), '{0}~{1}'.format(b3w_start.date(), b3w_end.date()), '{0}~{1}'.format(b2w_start.date(), b2w_end.date()), '{0}~{1}'.format(b1w_start.date(), b1w_end.date()), '{0}~{1}'.format(a1w_start.date(), a1w_end.date()), '{0}~{1}'.format(a2w_start.date(), a2w_end.date()), '{0}~{1}'.format(a3w_start.date(), a3w_end.date()), '{0}~{1}'.format(a4w_start.date(), a4w_end.date()) ] elif self.festival == 2: self.Dragon_Boat_Festival_dict[str(y)] = [ '{0}~{1}'.format(b4w_start.date(), b4w_end.date()), '{0}~{1}'.format(b3w_start.date(), b3w_end.date()), '{0}~{1}'.format(b2w_start.date(), b2w_end.date()), '{0}~{1}'.format(b1w_start.date(), b1w_end.date()), '{0}~{1}'.format(a1w_start.date(), a1w_end.date()), '{0}~{1}'.format(a2w_start.date(), a2w_end.date()), '{0}~{1}'.format(a3w_start.date(), a3w_end.date()), '{0}~{1}'.format(a4w_start.date(), a4w_end.date()) ] elif self.festival == 3: self.Mid_Autumn_Festival_dict[str(y)] = [ '{0}~{1}'.format(b4w_start.date(), b4w_end.date()), '{0}~{1}'.format(b3w_start.date(), b3w_end.date()), '{0}~{1}'.format(b2w_start.date(), b2w_end.date()), '{0}~{1}'.format(b1w_start.date(), b1w_end.date()), '{0}~{1}'.format(a1w_start.date(), a1w_end.date()), '{0}~{1}'.format(a2w_start.date(), a2w_end.date()), '{0}~{1}'.format(a3w_start.date(), a3w_end.date()), '{0}~{1}'.format(a4w_start.date(), a4w_end.date()) ] #新增最近一日的日期區間 self.all_date_list.append([self.yesterday, self.yesterday]) #西元年日期區間轉換為民國年日期區間 if self.festival == 1: self.ROC_Chinese_New_Year_dict = self.year2rocyear( self.Chinese_New_Year_dict) elif self.festival == 2: self.ROC_Dragon_Boat_Festival_dict = self.year2rocyear( self.Dragon_Boat_Festival_dict) elif self.festival == 3: self.ROC_Mid_Autumn_Festival_dict = self.year2rocyear( self.Mid_Autumn_Festival_dict)