tradecatlabs's picture
deploy FateCat HF Space free web workbench
acb2cec verified
Raw
History Blame Contribute Delete
2.2 kB
# -*- 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)