def test_lunar_holiday_in_current_year(self): self.assertEqual(gong.lunarnewyearsday(), LunarDate(current_year, 1, 1).toSolarDate()) self.assertEqual(gong.buddhasbirthday(), LunarDate(current_year, 4, 8).toSolarDate()) self.assertEqual(gong.koreanthanksgiving(), LunarDate(current_year, 8, 15).toSolarDate())
def _populate(self, year): # New Year's Day name = "New Year's Day" self[date(year, 1, 1)] = name # Chinese New Year/ Spring Festival name = "Chinese New Year" self[LunarDate(year, 1, 1).toSolarDate()] = name # Tomb-Sweeping Day name = "Tomb-Sweeping Day" self[date(year, 4, 4)] = name self[date(year, 4, 5)] = name # Labor Day name = "Labor Day" self[date(year, 5, 1)] = name # Dragon Boat Festival name = "Dragon Boat Festival" self[LunarDate(year, 5, 5).toSolarDate()] = name # Mid-Autumn Festival name = "Mid-Autumn Festival" self[LunarDate(year, 8, 15).toSolarDate()] = name # National Day name = "National Day" self[date(year, 10, 1)] = name
def trans_data(cls, source_data): _ = TrendBase.trans_data(source_data) _['name'] = SolarCalendar.recent(_['buy_date'])['name'] bd = LunarDate.fromSolarDate(_['buy_date'].year, _['buy_date'].month, _['buy_date'].day) sd = LunarDate.fromSolarDate(_['buy_date'].year, _['buy_date'].month, _['buy_date'].day) _['buy_tradate'] = '{}-{:02d}-{:02d}'.format(bd.year, bd.month, bd.day) _['sell_tradate'] = '{}-{:02d}-{:02d}'.format(sd.year, sd.month, sd.day) return _
def test_lunar_to_solar_19550329_leap_case_check(self): solar_date = LunarDate.to_solar(1955, 3, 29, False) assert solar_date.year == 1955 assert solar_date.month == 4 assert solar_date.day == 21 solar_date_leap = LunarDate.to_solar(1955, 3, 29, True) assert solar_date_leap.year == 1955 assert solar_date_leap.month == 5 assert solar_date_leap.day == 20
def test_lunar_to_solar_20150908_not_leap_month_case_check(self): solar_date = LunarDate.to_solar(2015, 7, 26, False) assert solar_date.year == 2015 assert solar_date.month == 9 assert solar_date.day == 8 solar_date_leap = LunarDate.to_solar(2015, 7, 26, True) assert solar_date_leap.year == 2015 assert solar_date_leap.month == 9 assert solar_date_leap.day == 8
def test_lunar_19040101_from_solar_19040216_two_way(self): date = LunarDate.from_solar(1904, 2, 16) assert date.year == 1904 assert date.month == 1 assert date.day == 1 assert date.is_leap_month is False solar_date = LunarDate.to_solar(1904, 1, 1, False) assert solar_date.year == 1904 assert solar_date.month == 2 assert solar_date.day == 16
def test_lunar_19790922_from_solar_19791111_two_way(self): date = LunarDate.from_solar(1979, 11, 11) assert date.year == 1979 assert date.month == 9 assert date.day == 22 assert date.is_leap_month is False solar_date = LunarDate.to_solar(1979, 9, 22, False) assert solar_date.year == 1979 assert solar_date.month == 11 assert solar_date.day == 11
def test_lunar_20140930_from_solar_20141023_two_way(self): date = LunarDate.from_solar(2014, 10, 23) assert date.year == 2014 assert date.month == 9 assert date.day == 30 assert date.is_leap_month is False solar_date = LunarDate.to_solar(2014, 9, 30, False) assert solar_date.year == 2014 assert solar_date.month == 10 assert solar_date.day == 23
def test_lunar_19870621_from_solar_19870815_leap_two_way(self): date = LunarDate.from_solar(1987, 8, 15) assert date.year == 1987 assert date.month == 6 assert date.day == 21 assert date.is_leap_month is True solar_date = LunarDate.to_solar(1987, 6, 21, True) assert solar_date.year == 1987 assert solar_date.month == 8 assert solar_date.day == 15
def test_lunar_20171025_from_solar_20171212_two_way(self): date = LunarDate.from_solar(2017, 12, 12) assert date.year == 2017 assert date.month == 10 assert date.day == 25 assert date.is_leap_month is False solar_date = LunarDate.to_solar(2017, 10, 25, False) assert solar_date.year == 2017 assert solar_date.month == 12 assert solar_date.day == 12
def test_lunar_19870729_from_solar_19870921_two_way(self): date = LunarDate.from_solar(1987, 9, 21) assert date.year == 1987 assert date.month == 7 assert date.day == 29 assert date.is_leap_month is False solar_date = LunarDate.to_solar(1987, 7, 29, False) assert solar_date.year == 1987 assert solar_date.month == 9 assert solar_date.day == 21
def getNextRun(self): try: ld = self.getLunarDate() if datetime.date.today() < LunarDate(datetime.date.today().year,ld.month,ld.day).toSolarDate(): ld = LunarDate(datetime.date.today().year,ld.month,ld.day) else: ld= LunarDate(datetime.date.today().year+1,ld.month,ld.day) return ld.toSolarDate().strftime('%m/%d/%Y') except ValueError: return "Date before 1900 or after 2050 Error"
def test_lunar_19551119_from_solar_19560101_two_way(self): date = LunarDate.from_solar(1956, 1, 1) assert date.year == 1955 assert date.month == 11 assert date.day == 19 assert date.is_leap_month is False solar_date = LunarDate.to_solar(1955, 11, 19, False) assert solar_date.year == 1956 assert solar_date.month == 1 assert solar_date.day == 1
def test_lunar_19000101_from_solar_19000131_two_way(self): date = LunarDate.from_solar(1900, 1, 31) assert date.year == 1900 assert date.month == 1 assert date.day == 1 assert date.is_leap_month is False solar_date = LunarDate.to_solar(1900, 1, 1, False) assert solar_date.year == 1900 assert solar_date.month == 1 assert solar_date.day == 31
def post(self): user = users.get_current_user() if user: pass else: self.redirect(users.create_login_url(self.request.uri)) msg_job_queue_name= DEFAULT_MESSAGING_JOB_NAME msg_job = MessagingJob(parent=messagingJob_key(msg_job_queue_name)) msg_job.owner = users.get_current_user() msg_job.note = self.request.get('content') if self.request.get('date_type') == 'lunar': try: msg_job.date = LunarDate(int(self.request.get('year')), int(self.request.get('month')), int(self.request.get('day'))).toSolarDate() except ValueError: self.redirect('/?msg=invalid_date') return else: try: msg_job.date = date(int(self.request.get('year')), int(self.request.get('month')), int(self.request.get('day'))) LunarDate.fromSolarDate(msg_job.date.year, msg_job.date.month, msg_job.date.day).toSolarDate() except ValueError: self.redirect('/?msg=invalid_date') return lunarDate=LunarDate.fromSolarDate(msg_job.date.year,msg_job.date.month,msg_job.date.day) msg_job.lunar_month = lunarDate.month msg_job.lunar_day = lunarDate.day base_messaging_jobs_query = MessagingJob.query( ancestor=messagingJob_key(DEFAULT_MESSAGING_JOB_NAME)) messaging_jobs_query_by_user = base_messaging_jobs_query.filter( MessagingJob.owner == user) if messaging_jobs_query_by_user.count() >= MAX_ENTRIES_PER_USER: self.redirect('/?msg=exceed_user_quota') return messaging_jobs_query_by_date = base_messaging_jobs_query.filter( MessagingJob.lunar_month == msg_job.lunar_month).filter( MessagingJob.lunar_day == msg_job.lunar_day) if messaging_jobs_query_by_date.count() >= MAX_ENTRIES_PER_DAY: self.redirect('/?msg=exceed_daily_quota') return msg_job.put() self.redirect('/')
def lunar_today(): ''' Return today's lunar date ''' day1=[u"初", u"十", u"廿", u"三"] day2=[u"十", u"一", u"二", u"三", u"四", u"五", u"六", u"七", u"八", u"九"] month=day2[:] month[1] = u"正" month.extend([u"十", u"冬", u"腊"]) return u"%s月%s%s" % (month[LunarDate.today().month], day1[(LunarDate.today().day)/10], day2[LunarDate.today().day%10])
def test_lunar_to_solar_19550329_leap_case_check_with_solar(self): lunar_date = LunarDate(1955, 3, 29, False) solar_date = lunar_date.solar() assert solar_date.year == 1955 assert solar_date.month == 4 assert solar_date.day == 21 lunar_date_leap = LunarDate(1955, 3, 29, True) solar_date_leap = lunar_date_leap.solar() assert solar_date_leap.year == 1955 assert solar_date_leap.month == 5 assert solar_date_leap.day == 20
def _populate(self, year): # New Year's Day name = "New Year's Day" self[date(year, 1, 1)] = name # New Year's Day by the Lunar name = "New Year's Day by the Lunar" for offset in range(-1, 2, 1): ds = LunarDate(year + offset, 1, 1).toSolarDate() if ds.year == year: self[ds] = name # Independence Movement Day name = "Independence Movement Day" self[date(year, 3, 1)] = name # Buddha's Birthday name = "Buddha's Birthday" for offset in range(-1, 2, 1): ds = LunarDate(year + offset, 4, 8).toSolarDate() if ds.year == year: self[ds] = name # Children's Day name = "Children's Day" self[date(year, 5, 5)] = name # Memorial Day name = "Memorial Day" self[date(year, 6, 6)] = name # Liberation Day name = "Liberation Day" self[date(year, 8, 15)] = name # Chuseok name = "Chuseok" for offset in range(-1, 2, 1): ds = LunarDate(year + offset, 8, 15).toSolarDate() if ds.year == year: self[ds] = name # National Foundation Day name = "National Foundation Day" self[date(year, 10, 3)] = name # Hangeul Proclamation Day name = "Hangeul Proclamation Day" self[date(year, 10, 9)] = name # Christmas Day name = "Christmas Day" self[date(year, 12, 25)] = name
def buddha(year=None): """ :parm year: int :return: Buddha's Birthday Day """ year = year if year else _year return LunarDate(year, 4, 8).toSolarDate()
def chuseok(year=None): """ :parm year: int :return: Thanksgiving Day of Korea """ year = year if year else _year return LunarDate(year, 8, 15).toSolarDate()
def lunar_newyear(year=None): """ :parm year: int :return: Lunar New Year Day """ year = year if year else _year return LunarDate(year, 1, 1).toSolarDate()
def getTerm(date=None, seazon=None): # getTerm(year, seazon): # getTerm(2014, 0): 2014 Spring # getTerm(2014, 1): 2014 Autumn # getTerm([date]): # getTerm('2014-09-01') if date is None: date = getDateCN() if seazon is not None: year = date else: year, month, day = date.split('-') year = int(year) month = int(month) day = int(day) yearLunar = LunarDate.fromSolarDate(year, month, day).year if month < 8: if yearLunar == year: seazon = 0 else: seazon = 1 else: seazon = 1 year = yearLunar return str((year - 2009) * 2 + seazon)
def lunar_date(date): ''' Return lunar date accodring to given date Its format should be 1985-09-06 or 1985/09/06 raise Value error if date is not correct ''' if '-' in date: split_date = date.split('-') elif '/' in date: split_date = date.split('/') else: raise ValueError, "%s Not as 1985-09-06 or 1985/09/06" % date if len(split_date) != 3: raise ValueError, "%s Not as 1985-09-06 or 1985/09/06" % date year = int(split_date[0]) month = int(split_date[1]) day = int(split_date[2]) if year < 1900 or year > 2049: raise ValueError, "Year should in [1900, 2049]" date = datetime(year, month, day) date = LunarDate.fromSolarDate(year, month, day) day1=[u"初", u"十", u"廿", u"三"] day2=[u"十", u"一", u"二", u"三", u"四", u"五", u"六", u"七", u"八", u"九"] month=day2[:] month[1] = u"正" month.extend([u"十", u"冬", u"腊"]) return u"%s年%s月%s%s" % (date.year, month[date.month], day1[date.day/10], day2[date.day%10])
def get_queryset(self, *args, **kwargs): queryset_list = Event.objects.all() year_q = self.request.GET.get("year") month_q = self.request.GET.get("month") type_q = self.request.GET.get('type') if year_q and year_q != 'null': try: year_q = int(year_q) except: year_q = datetime.now().year else: year_q = datetime.now().year if type_q and type_q != 'null': queryset_list = queryset_list.filter(type=type_q) if month_q and month_q != 'null': month_q = int(month_q) filtered_queryset_list = [] for each_query in queryset_list: if each_query.is_lunar: date = LunarDate(year_q, each_query.origin_date.month, each_query.origin_date.day).toSolarDate() else: date = each_query.origin_date if date.month == month_q: filtered_queryset_list.append(each_query) return filtered_queryset_list return queryset_list
def koreanthanksgiving(self, year=None, dayoff=False, substitute=True): year = year if year else self.core.thisyear theday = LunarDate(year, 8, 15).toSolarDate() if dayoff: return self.core.threedays(theday) else: return theday
def get_converted_date(self, obj): year = self.context.get('request').GET.get('year') is_lunar = obj.is_lunar try: year = int(year) except: year = datetime.now().year if is_lunar: if not year or year == 'null' or (year < 1900 or year >= 2050): year = datetime.now().year date = LunarDate(year, obj.origin_date.month, obj.origin_date.day).toSolarDate() else: date = obj.origin_date return date.strftime("%m-%d")
def _populate(self, year): # New Year's Day name = "New Year's Day" self[date(year, 1, 1)] = name # Vietnamese New Year name = "Vietnamese New Year" self[LunarDate(year - 1, 12, 30).toSolarDate()] = name self[LunarDate(year, 1, 1).toSolarDate()] = name self[LunarDate(year, 1, 2).toSolarDate()] = name self[LunarDate(year, 1, 3).toSolarDate()] = name self[LunarDate(year, 1, 4).toSolarDate()] = name self[LunarDate(year, 1, 5).toSolarDate()] = name # Hung Kings Commemorations name = "Hung Kings Commemorations" self[LunarDate(year, 3, 10).toSolarDate()] = name # Reunification Day name = "Reunification Day" self[date(year, 4, 30)] = name # Labor Day/International Workers' Day name = "Labor Day/International Workers' Day" self[date(year, 5, 1)] = name # National Day name = "National Day" self[date(year, 9, 2)] = name
def buddhasbirthday(self, year=None, dayoff=False, substitute=True): year = year if year else self.core.thisyear theday = LunarDate(year, 4, 8).toSolarDate() if dayoff: if 1975 <= year: return theday else: return None else: return theday
def get(self): today_ld = LunarDate.today() q1 = MessagingJob.query(MessagingJob.lunar_month == today_ld.month, MessagingJob.lunar_day == today_ld.day) for job in q1.iter(): mail.send_mail( sender=SENDER, to=job.owner.email(), subject="Lunar Calendar Reminder - " + job.note, body=EMAIL_BODY % (job.owner.nickname(), job.note, job.getNextRun()), )
def validate_converted_date(self, value): date = value data = self.get_initial() request = self.context.get("request") year = request.GET.get('year') is_lunar = data.get("is_lunar") if is_lunar: if not year or year == 'null': year = datetime.now().year date = LunarDate(year, date.month, date.day).toSolarDate() return date
def process_workbook(workbook): s = workbook.sheet_by_index(0) print(s.name) out_book = Workbook() sheet1 = out_book.add_sheet("Sheet 1") cells = s.row(0) for i in range(3): sheet1.write(0, i, cells[i].value) sheet1.write(0, 3, u"阴历") for i in range(5): sheet1.write(0, 4 + i, unicode(2014 + i) + u" 阳历") for row in range(1, s.nrows): for col in range(3): value = s.cell(row, col).value sheet1.write(row, col, value) value = s.cell(row, 2).value valstr = str(int(value)) y = valstr[:4] m = valstr[4:6] d = valstr[6:8] #print(valstr) #print(y, m, d) y = int(y) m = int(m) d = int(d) try: lunar_date = LunarDate.fromSolarDate(y, m, d) sheet1.write( row, 3, u"{}-{}-{}".format(lunar_date.year, lunar_date.month, lunar_date.day)) for i in range(5): lunar_date.year = 2014 + i try: d = lunar_date.toSolarDate() sheet1.write(row, 4 + i, u"{}-{}-{}".format(d.year, d.month, d.day)) except Exception as e: print(e) print(u"错误的日期(1):" + valstr) print(lunar_date) sheet1.write(row, 4 + i, u"错误") except Exception as e: print(e) print(u"错误的日期(2):" + valstr) sheet1.write(row, 3, u"错误的日期" + valstr) return out_book
def _populate(self, year): # New Year's Day name = "New Year's Day" self[date(year, 1, 1)] = name # Chinese New Year/ Spring Festival name = "Chinese New Year" for offset in range(-1, 2, 1): ds = LunarDate(year + offset, 1, 1).toSolarDate() if ds.year == year: self[ds] = name # Tomb-Sweeping Day name = "Tomb-Sweeping Day" self[date(year, 4, 4)] = name self[date(year, 4, 5)] = name # Labor Day name = "Labor Day" self[date(year, 5, 1)] = name # Dragon Boat Festival name = "Dragon Boat Festival" for offset in range(-1, 2, 1): ds = LunarDate(year + offset, 5, 5).toSolarDate() if ds.year == year: self[ds] = name # Mid-Autumn Festival name = "Mid-Autumn Festival" for offset in range(-1, 2, 1): ds = LunarDate(year + offset, 8, 15).toSolarDate() if ds.year == year: self[ds] = name # National Day name = "National Day" self[date(year, 10, 1)] = name
def _populate(self, year): # New Year's Day name = "New Year's Day" self[date(year, 1, 1)] = name # Vietnamese New Year name = "Vietnamese New Year" for offset in range(-1, 2, 1): try: ds = LunarDate(year - 1 + offset, 12, 30).toSolarDate() except ValueError: ds = LunarDate(year - 1 + offset, 12, 29).toSolarDate() if ds.year == year: self[ds] = name ds = LunarDate(year + offset, 1, 1).toSolarDate() if ds.year == year: self[ds] = name ds = LunarDate(year + offset, 1, 2).toSolarDate() if ds.year == year: self[ds] = name ds = LunarDate(year + offset, 1, 3).toSolarDate() if ds.year == year: self[ds] = name ds = LunarDate(year + offset, 1, 4).toSolarDate() if ds.year == year: self[ds] = name ds = LunarDate(year + offset, 1, 5).toSolarDate() if ds.year == year: self[ds] = name # Hung Kings Commemorations name = "Hung Kings Commemorations" for offset in range(-1, 2, 1): ds = LunarDate(year + offset, 3, 10).toSolarDate() if ds.year == year: self[ds] = name # Reunification Day name = "Reunification Day" self[date(year, 4, 30)] = name # Labor Day/International Workers' Day name = "Labor Day/International Workers' Day" self[date(year, 5, 1)] = name # National Day name = "National Day" self[date(year, 9, 2)] = name
def getbirthday(self, year, month, day, hour, birthdaytype): f = open(datafolder + '万年历.txt') cal = pd.read_csv(f, header=0, index_col=0, encoding='utf-8') if birthdaytype == '阳历': l = cal.loc[dt.date(year, month, day).strftime('%Y-%m-%d')] return {'阳历':dt.datetime(year,month,day,hour),\ '阴历':{'生日':[l[0],l[1],l[2],hour]} } elif birthdaytype == '阴历': l = LunarDate(year, month, day, isLeapMonth).toSolarDate() return {'阳历':dt.datetime(l[0],l[1],l[2],hour),\ '阴历':{'生日':[year,month,day,hour]} }
def lunarnewyearsday(self, year=None, dayoff=False, substitute=True): year = year if year else self.core.thisyear theday = LunarDate(year, 1, 1).toSolarDate() if dayoff: if 2014 <= year: if substitute: return self.core.threedays(theday) else: return self.core.threedays(theday) elif 1989 <= year < 2014: return self.core.threedays(theday) elif 1985 <= year < 1989: return theday else: return None else: return theday
def checkFriends(today): birthData = file('D:\OtherCode\Navigation\Tools\LearningPython\Email\Birthday.txt','r') Persons = [] for line in birthData.readlines(): name = line.split(' ')[0] birthday = line.split(' ')[1] isLunar = line.split(' ')[2] birthDate = datetime.datetime.strptime(birthday, '%Y-%m-%d') age = today.date().year - birthDate.date().year if string.atoi(isLunar): birthDateLunar = LunarDate(birthDate.date().year, birthDate.date().month, birthDate.date().day).toSolarDate() birthDate = datetime.datetime.combine(birthDateLunar, datetime.time()) birthDate = birthDate.replace(year=today.year) timespan = birthDate - today if timespan.days >= -1 and timespan.days <= 2: Persons.append(Person(name, birthDate, timespan.days+1, age, string.atoi(isLunar))) return Persons
def isHoliday(self, date): y = date.getYear() m = date.getMonth() d = date.getDay() lDay = LunarDate.fromSolarDate(y, m, d) lm = lDay.month ld = lDay.day flag = ((m == 1) and (d == 1)) \ or ((m == 3) and (d == 1)) \ or (d == 5 and m == 4 and y <= 2005) \ or(d == 1 and m == 5) \ or(d == 5 and m == 5) \ or (d == 6 and m == 6) \ or (d == 17 and m == 7 and y <= 2007) \ or(d == 15 and m == 8) \ or (d == 3 and m == 10) \ or ((m == 10) and (d == 9) and (y >= 2013)) \ or ((m == 12) and (d == 25)) \ or ((lm == 12) and (ld == 31))\ or ((lm == 1) and (ld == 1))\ or ((lm == 1) and (ld == 2))\ or ((lm == 4) and (ld == 8))\ or ((lm == 8) and (ld == 14))\ or ((lm == 8) and (ld == 15))\ or ((lm == 8) and (ld == 16))\ or (d == 15 and m == 4 and y == 2004)\ or (d == 31 and m == 5 and y == 2006)\ or (d == 19 and m == 12 and y == 2007)\ or (d == 9 and m == 4 and y == 2008)\ or (d == 2 and m == 6 and y == 2010)\ or (d == 11 and m == 4 and y == 2012)\ or (d == 19 and m == 12 and y == 2012)\ or (d == 4 and m == 6 and y == 2014)\ or (d == 13 and m == 4 and y == 2016)\ or (d == 20 and m == 12 and y == 2017)\ or (d == 18 and m == 2 and y == 2015) \ or (d == 10 and m == 9 and y == 2014) if self.isWeekend(date) or flag : return True else : return False
def check_birth(self): """ 查询明天生日的人,百度查询,今天是农历几月几日 """ new_today = datetime.datetime.now() old_today = LunarDate.today() tomorrow = datetime.timedelta(days=1) peoples = [] for _i in range(7): peoples.append(People.objects.filter( ( Q(birth_lunar__month=old_today.month) & Q(birth_lunar__day=old_today.day) ) | ( Q(birth_new__month=new_today.month) & Q(birth_new__day=new_today.day) ) )) new_today += tomorrow old_today += tomorrow email = self.generate_birth_email(peoples) send_email(email, '好友生日提醒', settings.CRON_MAIL)
def getLunarDate(self): ld = LunarDate.fromSolarDate(self.date.year, self.date.month,self.date.day) return ld
"雷泽归妹":"归妹,天地之大义也。天地不交,而万物不兴。归妹,人之终始也。说以动,所归妹也。征凶,位不当也。无攸利,柔乘刚也。", "雷火丰":"丰,大也。明以动,故丰。王假之,尚大也。勿忧宜日中,宜照天下也。日中则昃,月盈则食,天地盈虚,与时消息,而况于人乎,况于鬼神乎?", "火山旅":"旅,小亨,柔得中乎外,而顺乎刚,止而丽乎明,是以小亨旅贞吉也。旅之时义大矣哉。", "风风巽":"重巽以申命,刚巽乎中正而志行。柔皆顺乎刚,是以小亨,利有攸往,利见大人。", "泽泽兑":"兑,说也。刚中而柔外,说以利贞,是以顺乎天,而应乎人。说以先民,民忘其劳。说以犯难,民忘其死。兑之大,民劝矣哉。", "风水涣":"涣亨,刚来而不穷,柔得位乎外,而上同。王假有庙,王乃在中也。利涉大川,乘木有功也。", "水泽节":"节亨,刚柔分而刚得中。苦节不可贞,其道穷也。说以行险,当位以节,中正以通。天地节,而四时成。节以制度,不伤财,不害民。", "风泽中孚":"中孚,柔在内而刚得中,说而巽,孚乃化邦也。豚鱼吉,信及豚鱼也。利涉大川,乘木舟虚也。中孚以利贞,乃应乎天也。", "雷山小过":"小过,小者过而亨也。过以利贞,与时行也。柔得中,是以小事吉也。刚失位而不中,是以不可大事也。有飞鸟之象焉,飞鸟遗之音,不宜上宜下大吉,上逆而下顺也。", "水火既济":"既济亨,小者亨也。利贞,刚柔正而位当也。初吉,柔得中也。终止则乱,其道穷也。", "火水未济":"未济亨,柔得中也。小狐汔济,未出中也。濡其尾,无攸利,不续终也。虽不当位,刚柔应也。" } timestr=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())) timelist=timestr.split('-') lunar=LunarDate.fromSolarDate(int(timelist[0]),int(timelist[1]),int(timelist[2])) lunar_year=((lunar.year-2000+6)%12) and ((lunar.year-2000+6)%12) or 12 lunar_month=lunar.month lunar_day=lunar.day lunar_hour=bool(((int(timelist[3])+1)//2+1)%12) and (((int(timelist[3])+1)//2+1)%12) or 12 upperhexagram=((lunar_year+lunar_month+lunar_day)%8) and ((lunar_year+lunar_month+lunar_day)%8) or 8 lowerhexagram=((lunar_year+lunar_month+lunar_day+lunar_hour)%8) and ((lunar_year+lunar_month+lunar_day+lunar_hour)%8) or 8 trans=((lunar_year+lunar_month+lunar_day+lunar_hour)%6) and ((lunar_year+lunar_month+lunar_day+lunar_hour)%6) or 6 solid=hexagram[upperhexagram]+hexagram[lowerhexagram] print(solid) for (key,value) in Yao.items(): if solid in key: print(value)