โดยทั่วไปคุณมีคำตอบแล้ว แต่ชั้นเรียนของฉันที่ฉันสร้างขึ้นอาจเป็นประโยชน์เช่นกัน สำหรับฉันแล้วมันแก้ความต้องการทั้งหมดของฉันที่ฉันเคยมีในโครงการ Pyhon ของฉัน
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)
วิธีใช้งาน
self.tz = pytz.timezone("Europe/Warsaw")
- ที่นี่คุณกำหนดเขตเวลาที่คุณต้องการใช้ในโครงการ
GetDate("2019-08-08").current()
- สิ่งนี้จะแปลงวันที่ในสตริงของคุณเป็นวัตถุที่รับรู้เวลาด้วยเขตเวลาที่คุณกำหนดใน pt 1 รูปแบบสตริงเริ่มต้นคือformat="%Y-%m-%d"
แต่คุณสามารถเปลี่ยนได้ (เช่น. GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)
GetDate("2019-08-08").get_month_first_day()
ส่งกลับวันที่ที่กำหนด (สตริงหรือวัตถุ) เดือนวันแรก
GetDate("2019-08-08").get_month_last_day()
ส่งคืนวันที่ที่กำหนดเดือนวันสุดท้าย
GetDate("2019-08-08").minimum_time()
ส่งคืนวันที่ที่กำหนดเริ่มต้นวันที่
GetDate("2019-08-08").maximum_time()
ส่งคืนวันที่สิ้นสุดที่กำหนด
GetDate("2019-08-08").time_delta_days({number_of_days})
ส่งคืนวันที่ที่กำหนด + เพิ่ม {จำนวนวัน} (คุณสามารถโทรหา: GetDate(timezone.now()).time_delta_days(-1)
เมื่อวานนี้)
GetDate("2019-08-08").time_delta_haours({number_of_hours})
คล้ายกับ pt 7 แต่ทำงานในชั่วโมง
GetDate("2019-08-08").time_delta_seconds({number_of_seconds})
คล้ายกับ pt 7 แต่ทำงานในไม่กี่วินาที
name 'timedelta' is not defined
นั่นหมายความว่าคุณไม่ได้กำหนดไว้timedelta
ที่ใด งูใหญ่มักให้ข้อมูลเกี่ยวกับข้อความแสดงข้อผิดพลาด