migration: establish exact preserved app baseline
This commit is contained in:
Vendored
+85
@@ -0,0 +1,85 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import Solar, SolarWeek
|
||||
from .util import SolarUtil
|
||||
|
||||
|
||||
class SolarMonth:
|
||||
"""
|
||||
阳历月
|
||||
"""
|
||||
|
||||
def __init__(self, year, month):
|
||||
self.__year = year
|
||||
self.__month = month
|
||||
|
||||
@staticmethod
|
||||
def fromDate(date):
|
||||
return SolarMonth(date.year, date.month)
|
||||
|
||||
@staticmethod
|
||||
def fromYm(year: int, month: int):
|
||||
return SolarMonth(year, month)
|
||||
|
||||
def getYear(self):
|
||||
return self.__year
|
||||
|
||||
def getMonth(self):
|
||||
return self.__month
|
||||
|
||||
def toString(self):
|
||||
return "%d-%d" % (self.__year, self.__month)
|
||||
|
||||
def toFullString(self):
|
||||
return "%d年%d月" % (self.__year, self.__month)
|
||||
|
||||
def __str__(self):
|
||||
return self.toString()
|
||||
|
||||
def getDays(self):
|
||||
"""
|
||||
获取本月的阳历日期列表
|
||||
:return: 阳历日期列表
|
||||
"""
|
||||
days = []
|
||||
d = Solar.fromYmd(self.__year, self.__month, 1)
|
||||
days.append(d)
|
||||
for i in range(1, SolarUtil.getDaysOfMonth(self.__year, self.__month)):
|
||||
days.append(d.next(i))
|
||||
return days
|
||||
|
||||
def getWeeks(self, start):
|
||||
"""
|
||||
获取本月的阳历日期列表
|
||||
:param start: 星期几作为一周的开始,1234560分别代表星期一至星期天
|
||||
:return: 阳历日期列表
|
||||
"""
|
||||
weeks = []
|
||||
week = SolarWeek.fromYmd(self.__year, self.__month, 1, start)
|
||||
while True:
|
||||
weeks.append(week)
|
||||
week = week.next(1, False)
|
||||
first_day = week.getFirstDay()
|
||||
if first_day.getYear() > self.__year or first_day.getMonth() > self.__month:
|
||||
break
|
||||
return weeks
|
||||
|
||||
def next(self, months):
|
||||
"""
|
||||
获取往后推几个月的阳历月,如果要往前推,则月数用负数
|
||||
:param months: 月数
|
||||
:return: 阳历月
|
||||
"""
|
||||
n = 1
|
||||
if months < 0:
|
||||
n = -1
|
||||
m = abs(months)
|
||||
y = self.__year + int(m / 12) * n
|
||||
m = self.__month + m % 12 * n
|
||||
if m > 12:
|
||||
m -= 12
|
||||
y += 1
|
||||
elif m < 1:
|
||||
m += 12
|
||||
y -= 1
|
||||
return SolarMonth.fromYm(y, m)
|
||||
Reference in New Issue
Block a user