from datetime import datetime, timedelta
import calendar
class Calendars:
def __init__(self) -> None:
pass
def getNow(self):
"""获取今天"""
return datetime.now()
def getDayOffsetNow(self, offset="+0"):
"""获取今日偏移后的日期"""
now = datetime.now()
offset_day = now
if '-' in offset:
offset_day = now + timedelta(days=int(offset))
elif '-' in offset:
offset_day = now - timedelta(days=int(offset))
return offset_day
def getFirstDayOfMonth(self, date:datetime=datetime.now()):
"""获取月第一天"""
# now = datetime.now()
first_day = datetime(date.year, date.month, 1)
return first_day
def getLastDayOfMonth(self, date:datetime=datetime.now()):
"""获取月最后一天"""
last_day_of_month = calendar.monthrange(date.year, date.month)[1]
last_day = datetime(date.year, date.month, last_day_of_month)
return last_day
def getDaysOfMonth(self, date:datetime=datetime.now()):
"""获取月天数"""
_, days = calendar.monthrange(date.year, date.month)
return days
def getDaysToNow(self, date:datetime=datetime.now()):
"""获取月初距今多少天,不算当天"""
first_day = self.getFirstDayOfMonth()
return (date - first_day).days
def getWorkDaysOfMonth(self):
"""获取当月有多少个工作日"""
first_day = self.getFirstDayOfMonth()
last_day = self.getLastDayOfMonth()
workdays = 0
current_day = first_day
while current_day <= last_day:
if current_day.weekday() < 5:
workdays += 1
current_day += timedelta(days=1)
return workdays
def getWorkDaysToNow(self):
"""获取当月距今有多少个工作日"""
first_day = self.getFirstDayOfMonth()
today = datetime.now()
workdays = 0
current_day = first_day
while current_day <= today:
if current_day.weekday() < 5:
workdays += 1
current_day += timedelta(days=1)
return workdays
if __name__=='__main__':
C = Calendars()
s = C.getFirstDayOfMonth()
print(s)
# print(int(s.day))
Python处理自然月
最新推荐文章于 2024-08-05 23:13:57 发布