PamGram/modules/action_log/date.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

37 lines
1.3 KiB
Python
Raw Permalink Normal View History

2024-06-17 16:29:31 +00:00
from datetime import datetime, timedelta
from pytz import timezone
TZ = timezone("Asia/Shanghai")
class DateUtils:
def __init__(self):
self.now = datetime.now(tz=TZ)
# 本周
self.week_start = self.date_start(self.now - timedelta(days=self.now.weekday()))
self.week_end = self.week_start + timedelta(days=7)
# 上周
self.week_last_start = self.week_start - timedelta(days=7)
self.week_last_end = self.week_start
# 本月
self.month_start = self.date_start(self.now.replace(day=1))
self.month_end = self.get_month_end(self.month_start)
# 上月
month_last = (self.month_start - timedelta(days=1)).replace(day=1)
self.month_last_start = self.date_start(month_last)
self.month_last_end = self.get_month_end(month_last)
@staticmethod
def date_start(date: datetime) -> datetime:
return date.replace(hour=4, minute=0, second=0, microsecond=0)
def get_week_start(self) -> datetime:
day = self.now - timedelta(days=self.now.weekday())
return self.date_start(day)
def get_month_end(self, date: datetime) -> datetime:
next_month = date.replace(day=28) + timedelta(days=5)
next_month_start = next_month.replace(day=1)
return self.date_start(next_month_start)