Nói chung, bạn không có câu trả lời ngay bây giờ nhưng có lẽ lớp tôi tạo ra cũng sẽ rất hữu ích. Đối với tôi, nó giải quyết tất cả các yêu cầu của tôi mà tôi từng có trong các dự án Pyhon của mình.
class GetDate:
def __init__(self, date, format="%Y-%m-%d"):
self.tz = pytz.timezone("Europe/Warsaw")
if isinstance(date, str):
date = datetime.strptime(date, format)
self.date = date.astimezone(self.tz)
def time_delta_days(self, days):
return self.date + timedelta(days=days)
def time_delta_hours(self, hours):
return self.date + timedelta(hours=hours)
def time_delta_seconds(self, seconds):
return self.date + timedelta(seconds=seconds)
def get_minimum_time(self):
return datetime.combine(self.date, time.min).astimezone(self.tz)
def get_maximum_time(self):
return datetime.combine(self.date, time.max).astimezone(self.tz)
def get_month_first_day(self):
return datetime(self.date.year, self.date.month, 1).astimezone(self.tz)
def current(self):
return self.date
def get_month_last_day(self):
lastDay = calendar.monthrange(self.date.year, self.date.month)[1]
date = datetime(self.date.year, self.date.month, lastDay)
return datetime.combine(date, time.max).astimezone(self.tz)
Làm thế nào để sử dụng nó
self.tz = pytz.timezone("Europe/Warsaw")
- ở đây bạn xác định Múi giờ bạn muốn sử dụng trong dự án
GetDate("2019-08-08").current()
- điều này sẽ chuyển đổi ngày chuỗi của bạn thành đối tượng nhận biết thời gian với múi giờ bạn đã xác định trong pt 1. Định dạng chuỗi mặc định là format="%Y-%m-%d"
nhưng hãy thoải mái thay đổi nó. (ví dụ. GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)
GetDate("2019-08-08").get_month_first_day()
trả về ngày đã cho (chuỗi hoặc đối tượng) vào ngày đầu tiên
GetDate("2019-08-08").get_month_last_day()
trả lại ngày tháng tháng trước
GetDate("2019-08-08").minimum_time()
trả lại ngày bắt đầu ngày
GetDate("2019-08-08").maximum_time()
trả lại ngày kết thúc
GetDate("2019-08-08").time_delta_days({number_of_days})
trả về ngày đã cho + thêm {số ngày} (bạn cũng có thể gọi: GetDate(timezone.now()).time_delta_days(-1)
cho ngày hôm qua)
GetDate("2019-08-08").time_delta_haours({number_of_hours})
tương tự pt 7 nhưng làm việc theo giờ
GetDate("2019-08-08").time_delta_seconds({number_of_seconds})
tương tự pt 7 nhưng hoạt động trên giây
name 'timedelta' is not defined
, điều đó có nghĩa là bạn chưa xác định ởtimedelta
bất cứ đâu. Python thường khá nhiều thông tin về các thông báo lỗi của nó.