Một chương trình Python có thể xử lý ngày và giờ theo nhiều cách khác nhau. Việc chuyển đổi giữa các định dạng ngày là một công việc thường gặp đối với máy tính. Các mô-đun sau đây trong thư viện chuẩn của Python xử lý các tác vụ liên quan đến ngày và giờ −
Mô-đun DateTime
Mô-đun time
Mô-đun Calendar
Các khoảng thời gian là các số thực với đơn vị là giây. Các thời điểm cụ thể được biểu diễn bằng số giây kể từ 12:00 sáng, ngày 1 tháng 1 năm 1970 (epoch).
Có một mô-đun time phổ biến trong Python, cung cấp các hàm để làm việc với thời gian và để chuyển đổi giữa các biểu diễn. Hàm time.time() trả về thời gian hệ thống hiện tại tính bằng ticks kể từ 12:00 sáng, ngày 1 tháng 1 năm 1970 (epoch).
import time # This is required to include time module. ticks = time.time() print ("Number of ticks since 12:00am, January 1, 1970:", ticks)
Điều này sẽ tạo ra một kết quả giống như sau −
Number of ticks since 12:00am, January 1, 1970: 1681928297.5316436
Phép toán ngày tháng thì dễ dàng thực hiện với ticks. Tuy nhiên, các ngày trước kỷ nguyên (epoch) không thể được biểu diễn theo cách này. Các ngày ở tương lai xa cũng không thể được biểu diễn theo cách này - điểm cắt là vào một thời điểm nào đó trong năm 2038 cho UNIX và Windows.
Nhiều hàm thời gian trong Python xử lý thời gian dưới dạng một bộ 9 số, như được hiển thị bên dưới −
Index | Field | Values |
---|---|---|
0 | 4-digit year | 2016 |
1 | Month | 1 to 12 |
2 | Day | 1 to 31 |
3 | Hour | 0 to 23 |
4 | Minute | 0 to 59 |
5 | Second | 0 to 61 (60 or 61 are leap-seconds) |
6 | Day of Week | 0 to 6 (0 is Monday) |
7 | Day of year | 1 to 366 (Julian day) |
8 | Daylight savings | -1, 0, 1, -1 means library determines DST |
For example,
>>>import time >>> print (time.localtime())
Điều này sẽ tạo ra một output như sau −
time.struct_time(tm_year=2023, tm_mon=4, tm_mday=19, tm_hour=23, tm_min=49, tm_sec=8, tm_wday=2, tm_yday=109, tm_isdst=0)
Tuple ở trên tương đương với cấu trúc struct_time. Cấu trúc này có các thuộc tính sau:
Index | Attributes | Values |
---|---|---|
0 | tm_year | 2016 |
1 | tm_mon | 1 to 12 |
2 | tm_mday | 1 to 31 |
3 | tm_hour | 0 to 23 |
4 | tm_min | 0 to 59 |
5 | tm_sec | 0 to 61 (60 or 61 are leap-seconds) |
6 | tm_wday | 0 to 6 (0 is Monday) |
7 | tm_yday | 1 to 366 (Julian day) |
8 | tm_isdst | -1, 0, 1, -1 means library determines DST |
Để chuyển đổi một thời điểm từ seconds kể từ thời điểm khởi đầu (epoch) sang một bộ giá trị thời gian, hãy truyền giá trị số thực vào một hàm (ví dụ: localtime) mà trả về một bộ giá trị thời gian với tất cả chín mục hợp lệ.
import time localtime = time.localtime(time.time()) print ("Local current time :", localtime)
Điều này sẽ tạo ra kết quả sau, có thể được định dạng theo bất kỳ hình thức trình bày nào khác -
Local current time : time.struct_time(tm_year=2023, tm_mon=4, tm_mday=19, tm_hour=23, tm_min=42, tm_sec=41, tm_wday=2, tm_yday=109, tm_isdst=0)
Bạn có thể định dạng thời gian theo yêu cầu của mình, nhưng một phương pháp đơn giản để có được thời gian ở định dạng dễ đọc là asctime() −
import time localtime = time.asctime( time.localtime(time.time()) ) print ("Local current time :", localtime)
Điều này sẽ tạo ra output −
Local current time : Wed Apr 19 23:45:27 2023
Mô-đun calendar cung cấp một loạt các phương thức để làm việc với các lịch hàng năm và hàng tháng. Ở đây, chúng tôi in ra một lịch cho một tháng nhất định (Tháng 1 năm 2008).
import calendar cal = calendar.month(2023, 4) print ("Here is the calendar:") print (cal)
Điều này sẽ tạo ra output −
Here is the calendar: April 2023 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Có một mô-đun time phổ biến trong Python, cung cấp các hàm để làm việc với thời gian và chuyển đổi giữa các biểu diễn. Dưới đây là danh sách tất cả các phương thức có sẵn.
Sr.No. | Function with Description |
---|---|
1 | time.altzone The offset of the local DST timezone, in seconds west of UTC, if one is defined. This is negative if the local DST timezone is east of UTC (as in Western Europe, including the UK). Only use this if daylight is nonzero. |
2 | time.asctime([tupletime]) Accepts a time-tuple and returns a readable 24-character string such as 'Tue Dec 11 18:07:14 2008'. |
3 | time.clock( ) Returns the current CPU time as a floating-point number of seconds. To measure computational costs of different approaches, the value of time.clock is more useful than that of time.time(). |
4 | time.ctime([secs]) Like asctime(localtime(secs)) and without arguments is like asctime( ) |
5 | time.gmtime([secs]) Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the UTC time. Note : t.tm_isdst is always 0 |
6 | time.localtime([secs]) Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the local time (t.tm_isdst is 0 or 1, depending on whether DST applies to instant secs by local rules). |
7 | time.mktime(tupletime) Accepts an instant expressed as a time-tuple in local time and returns a floating-point value with the instant expressed in seconds since the epoch. |
8 | time.sleep(secs) Suspends the calling thread for secs seconds. |
9 | time.strftime(fmt[,tupletime]) Accepts an instant expressed as a time-tuple in local time and returns a string representing the instant as specified by string fmt. |
10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') Parses str according to format string fmt and returns the instant in time-tuple format. |
11 | time.time( ) Returns the current time instant, a floating-point number of seconds since the epoch. |
12 | time.tzset() Resets the time conversion rules used by the library routines. The environment variable TZ specifies how this is done. |
Hãy cùng điểm qua các hàm một cách ngắn gọn.
Có hai thuộc tính quan trọng có sẵn trong mô-đun time. Chúng là:
Sr.No. | Attribute with Description |
---|---|
1 | time.timezone Attribute time.timezone is the offset in seconds of the local time zone (without DST) from UTC (>0 in the Americas; <=0 in most of Europe, Asia, Africa). |
2 | time.tzname Attribute time.tzname is a pair of locale-dependent strings, which are the names of the local time zone without and with DST, respectively. |
Module calendar cung cấp các hàm liên quan đến lịch, bao gồm các hàm để in ra lịch dạng văn bản cho một tháng hoặc năm nhất định.
Theo mặc định, lịch coi thứ Hai là ngày đầu tiên của tuần và Chủ nhật là ngày cuối cùng. Để thay đổi điều này, hãy gọi hàm calendar.setfirstweekday() .
Dưới đây là danh sách các hàm có sẵn với mô-đun calendar −
Sr.No. | Function with Description |
---|---|
1 | calendar.calendar(year,w=2,l=1,c=6) Returns a multiline string with a calendar for year year formatted into three columns separated by c spaces. w is the width in characters of each date; each line has length 21*w+18+2*c. l is the number of lines for each week. |
2 | calendar.firstweekday( ) Returns the current setting for the weekday that starts each week. By default, when calendar is first imported, this is 0, meaning Monday. |
3 | calendar.isleap(year) Returns True if year is a leap year; otherwise, False. |
4 | calendar.leapdays(y1,y2) Returns the total number of leap days in the years within range(y1,y2). |
5 | calendar.month(year,month,w=2,l=1) Returns a multiline string with a calendar for month month of year year, one line per week plus two header lines. w is the width in characters of each date; each line has length 7*w+6. l is the number of lines for each week. |
6 | calendar.monthcalendar(year,month) Returns a list of lists of ints. Each sublist denotes a week. Days outside month month of year year are set to 0; days within the month are set to their day-of-month, 1 and up. |
7 | calendar.monthrange(year,month) Returns two integers. The first one is the code of the weekday for the first day of the month month in year year; the second one is the number of days in the month. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 to 12. |
8 | calendar.prcal(year,w=2,l=1,c=6) Like print calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w=2,l=1) Like print calendar.month(year,month,w,l). |
10 | calendar.setfirstweekday(weekday) Sets the first day of each week to weekday code weekday. Weekday codes are 0 (Monday) to 6 (Sunday). |
11 | calendar.timegm(tupletime) The inverse of time.gmtime: accepts a time instant in time-tuple form and returns the same instant as a floating-point number of seconds since the epoch. |
12 | calendar.weekday(year,month,day) Returns the weekday code for the given date. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 (January) to 12 (December). |
Mô-đun datetime của Python được bao gồm trong thư viện chuẩn. Nó bao gồm các lớp giúp thao tác với dữ liệu ngày và giờ cũng như thực hiện các phép toán với ngày và giờ.
Các đối tượng của các lớp datetime có thể là có nhận thức (aware) hoặc không có nhận thức (naïve). Nếu đối tượng bao gồm thông tin về múi giờ, nó được coi là có nhận thức, và nếu không, nó được phân loại là không có nhận thức. Một đối tượng của lớp date là không có nhận thức, trong khi các đối tượng time và datetime là có nhận thức.
Một đối tượng ngày đại diện cho một ngày với năm, tháng và ngày. Lịch Gregory hiện tại được kéo dài vô hạn theo cả hai hướng.
datetime.date(year, month, day)
Các tham số phải là số nguyên, trong các khoảng sau −
year − MINYEAR <= year <= MAXYEAR
month − 1 <= month <= 12
day − 1 <= day <= số ngày trong tháng và năm đã cho
Nếu giá trị của bất kỳ đối số nào nằm ngoài các khoảng đó được cung cấp, sẽ có một lỗi ValueError được ném ra.
from datetime import date date1 = date(2023, 4, 19) print("Date:", date1) date2 = date(2023, 4, 31)
Nó sẽ tạo ra output −
Date: 2023-04-19 Traceback (most recent call last): File "C:\Python311\hello.py", line 8, in <module> date2 = date(2023, 4, 31) ValueError: day is out of range for month
date.min − Ngày có thể biểu diễn sớm nhất, date(MINYEAR, 1, 1).
date.max − Ngày có thể đại diện mới nhất, date(MAXYEAR, 12, 31).
date.resolution − Sự khác biệt nhỏ nhất có thể giữa các đối tượng ngày tháng không bằng nhau.
date.year − Giữa MINYEAR và MAXYEAR bao gồm cả hai.
date.month − Giữa 1 và 12 bao gồm cả.
date.day − Giữa 1 và số ngày trong tháng đã cho của năm đã cho.
from datetime import date # Getting min date mindate = date.min print("Minimum Date:", mindate) # Getting max date maxdate = date.max print("Maximum Date:", maxdate) Date1 = date(2023, 4, 20) print("Year:", Date1.year) print("Month:", Date1.month) print("Day:", Date1.day)
Nó sẽ tạo ra output −
Minimum Date: 0001-01-01 Maximum Date: 9999-12-31 Year: 2023 Month: 4 Day: 20
today() − Trả về ngày hiện tại theo múi giờ địa phương.
fromtimestamp(timestamp) − Trả về ngày địa phương tương ứng với dấu thời gian POSIX, chẳng hạn như được trả về bởi time.time().
fromordinal(ordinal) − Trả về ngày tương ứng với số thứ tự Gregorian proleptic, trong đó ngày 1 tháng 1 của năm 1 có số thứ tự là 1.
fromisoformat(date_string) − Trả về một ngày tương ứng với một date_string được cung cấp theo bất kỳ định dạng ISO 8601 hợp lệ nào, ngoại trừ các ngày thứ tự.
from datetime import date print (date.today()) d1=date.fromisoformat('2023-04-20') print (d1) d2=date.fromisoformat('20230420') print (d2) d3=date.fromisoformat('2023-W16-4') print (d3)
Nó sẽ tạo ra output −
2023-04-20 2023-04-20 2023-04-20 2023-04-20
replace() − Trả về một ngày bằng cách thay thế các thuộc tính được chỉ định bằng các giá trị mới thông qua các đối số từ khóa được chỉ định.
timetuple() − Trả về một time.struct_time giống như được trả về bởi time.localtime().
toordinal() − Trả về chỉ số Gregorian proleptic của ngày, trong đó ngày 1 tháng 1 của năm 1 có chỉ số là 1. Đối với bất kỳ đối tượng ngày nào d, date.fromordinal(d.toordinal()) == d.
weekday() − Trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 0 và Chủ Nhật là 6.
isoweekday() − Trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 1 và Chủ Nhật là 7.
isocalendar() − Trả về một đối tượng tuple có tên với ba thành phần: năm, tuần và ngày trong tuần.
isoformat() − Trả về một chuỗi đại diện cho ngày theo định dạng ISO 8601, YYYY-MM-DD:
__str__() − Đối với một ngày d, str(d) tương đương với d.isoformat()
ctime() − Trả về một chuỗi đại diện cho ngày:
strftime(format) − Trả về một chuỗi đại diện cho ngày tháng, được kiểm soát bởi một chuỗi định dạng rõ ràng.
__format__(format) − Giống như date.strftime().
from datetime import date d = date.fromordinal(738630) # 738630th day after 1. 1. 0001 print (d) print (d.timetuple()) # Methods related to formatting string output print (d.isoformat()) print (d.strftime("%d/%m/%y")) print (d.strftime("%A %d. %B %Y")) print (d.ctime()) print ('The {1} is {0:%d}, the {2} is {0:%B}.'.format(d, "day", "month")) # Methods for to extracting 'components' under different calendars t = d.timetuple() for i in t: print(i) ic = d.isocalendar() for i in ic: print(i) # A date object is immutable; all operations produce a new object print (d.replace(month=5))
Nó sẽ tạo ra output −
2023-04-20 time.struct_time(tm_year=2023, tm_mon=4, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=110, tm_isdst=-1) 2023-04-20 20/04/23 Thursday 20. April 2023 Thu Apr 20 00:00:00 2023 The day is 20, the month is April. 2023 4 20 0 0 0 3 110 -1 2023 16 4 2023-05-20
Một đối tượng lớp thời gian đại diện cho thời gian địa phương trong ngày. Nó độc lập với bất kỳ ngày cụ thể nào. Nếu đối tượng chứa chi tiết tzinfo, thì nó là đối tượng có nhận thức. Nếu nó là None, thì đối tượng thời gian là đối tượng không có nhận thức.
datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Tất cả các đối số đều là tùy chọn. tzinfo có thể là None, hoặc là một thể hiện của một lớp con tzinfo. Các đối số còn lại phải là các số nguyên trong các khoảng sau đây -
hour − 0 <= hour < 24,
minute − 0 <= phút < 60,
second − 0 <= second < 60,
microsecond − 0 <= microsecond < 1000000
Nếu bất kỳ đối số nào nằm ngoài các khoảng đó, sẽ xảy ra lỗi ValueError.
from datetime import time time1 = time(8, 14, 36) print("Time:", time1) time2 = time(minute = 12) print("time", time2) time3 = time() print("time", time3) time4 = time(hour = 26)
Nó sẽ tạo ra output −
Time: 08:14:36 time 00:12:00 time 00:00:00 Traceback (most recent call last): File "/home/cg/root/64b912f27faef/main.py", line 12, intime4 = time(hour = 26) ValueError: hour must be in 0..23
time.min − Thời gian có thể biểu diễn sớm nhất, time(0, 0, 0, 0).
time.max − Thời gian có thể đại diện mới nhất, time(23, 59, 59, 999999).
time.resolution − Sự khác biệt nhỏ nhất có thể giữa các đối tượng thời gian không bằng nhau.
from datetime import time print(time.min) print(time.max) print (time.resolution)
Nó sẽ tạo ra output −
00:00:00 23:59:59.999999 0:00:00.000001
time.hour − Trong range(24)
time.minute − Trong range(60)
time.second − Trong khoảng(60)
time.microsecond − Trong khoảng (1000000)
time.tzinfo − đối số tzinfo cho hàm tạo time, hoặc None.
from datetime import time t = time(8,23,45,5000) print(t.hour) print(t.minute) print (t.second) print (t.microsecond)
Nó sẽ tạo ra output −
8 23 455000
replace() − Trả về một thời gian với giá trị giống như nhau, ngoại trừ những thuộc tính được chỉ định giá trị mới bởi các tham số từ khóa nào được chỉ định.
isoformat() − Trả về một chuỗi đại diện cho thời gian theo định dạng ISO 8601.
__str__() − Đối với một khoảng thời gian t, str(t) tương đương với t.isoformat().
strftime(format) − Trả về một chuỗi đại diện cho thời gian, được kiểm soát bởi một chuỗi định dạng rõ ràng.
__format__(format) − Tương tự như time.strftime().
utcoffset() − Nếu tzinfo là None, trả về None, nếu không, trả về self.tzinfo.utcoffset(None),
dst() − Nếu tzinfo là None, trả về None, nếu không, trả về self.tzinfo.dst(None),
tzname() − Nếu tzinfo là None, trả về None, nếu không thì trả về self.tzinfo.tzname(None), hoặc ném ra một ngoại lệ.
Một đối tượng của lớp datetime chứa thông tin về ngày và giờ cùng nhau. Nó giả định lịch Gregory hiện tại được mở rộng theo cả hai hướng; giống như một đối tượng thời gian, và có chính xác 3600*24 giây trong mỗi ngày.
datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
Các đối số năm, tháng và ngày là bắt buộc.
year − MINYEAR <= year <= MAXYEAR,
month − 1 <= month <= 12,
day − 1 <= day <= số ngày trong tháng và năm đã cho,
hour − 0 <= hour < 24,
minute − 0 <= phút < 60,
second −0 <= second < 60,
microsecond − 0 <= microsecond < 1000000,
fold − trong [0, 1].
Nếu bất kỳ đối số nào nằm ngoài phạm vi cho phép, một ValueError sẽ được ném ra.
from datetime import datetime dt = datetime(2023, 4, 20) print(dt) dt = datetime(2023, 4, 20, 11, 6, 32, 5000) print(dt)
Nó sẽ tạo ra output −
2023-04-20 00:00:00 2023-04-20 11:06:32.005000
datetime.min − Thời gian có thể đại diện sớm nhất, datetime(MINYEAR, 1, 1, tzinfo=None).
datetime.max − Ngày giờ có thể đại diện mới nhất, datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None).
datetime.resolution − Sự khác biệt nhỏ nhất có thể giữa các đối tượng datetime không bằng nhau, timedelta(microseconds=1).
from datetime import datetime min = datetime.min print("Min DateTime ", min) max = datetime.max print("Max DateTime ", max)
Nó sẽ tạo ra output −
Min DateTime 0001-01-01 00:00:00 Max DateTime 9999-12-31 23:59:59.999999
datetime.year − Giữa MINYEAR và MAXYEAR bao gồm cả hai.
datetime.month − Giữa 1 và 12, bao gồm cả hai.
datetime.day − Giữa 1 và số ngày trong tháng được cho của năm được cho.
datetime.hour − Trong khoảng(24)
datetime.minute − Trong khoảng(60)
datetime.second − Trong khoảng(60)
datetime.microsecond − Trong range(1000000).
datetime.tzinfo − Đối tượng được truyền dưới dạng đối số tzinfo cho trình tạo datetime, hoặc None nếu không có đối số nào được truyền.
datetime.fold − Trong [0, 1]. Được sử dụng để phân biệt thời gian tường trong một khoảng thời gian lặp lại.
from datetime import datetime dt = datetime.now() print("Day: ", dt.day) print("Month: ", dt.month) print("Year: ", dt.year) print("Hour: ", dt.hour) print("Minute: ", dt.minute) print("Second: ", dt.second)
Nó sẽ tạo ra output −
Day: 20 Month: 4 Year: 2023 Hour: 15 Minute: 5 Second: 52
today() − Trả về ngày giờ địa phương hiện tại, với tzinfo là None.
now(tz=None) − Trả về ngày và giờ hiện tại theo múi giờ địa phương.
utcnow() − Trả về ngày và giờ UTC hiện tại, với tzinfo là None.
utcfromtimestamp(timestamp) − Trả về datetime UTC tương ứng với timestamp POSIX, với tzinfo là None.
fromtimestamp(timestamp, timezone.utc) − Trên các nền tảng tuân thủ POSIX, nó tương đương với datetime(1970, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=timestamp)
fromordinal(ordinal) − Trả về datetime tương ứng với số thứ tự Gregorian proleptic, trong đó ngày 1 tháng 1 của năm 1 có số thứ tự là 1.
fromisoformat(date_string) − Trả về một đối tượng datetime tương ứng với một date_string ở bất kỳ định dạng ISO 8601 hợp lệ nào.
date() − Trả về đối tượng ngày với cùng năm, tháng và ngày.
time() − Trả về đối tượng thời gian với cùng giờ, phút, giây, micro giây và fold.
timetz() − Trả về đối tượng thời gian với cùng giờ, phút, giây, micro giây, fold và các thuộc tính tzinfo. Xem thêm phương thức time().
replace() − Trả về một đối tượng datetime với các thuộc tính giống nhau, ngoại trừ các thuộc tính được cung cấp giá trị mới bởi bất kỳ tham số từ khóa nào được chỉ định.
astimezone(tz=None) − Trả về một đối tượng datetime với thuộc tính tzinfo mới là tz.
utcoffset() − Nếu tzinfo là None, trả về None, nếu không, trả về self.tzinfo.utcoffset(self)
dst() − Nếu tzinfo là None, trả về None, nếu không thì trả về self.tzinfo.dst(self)
tzname() − Nếu tzinfo là None, trả về None, nếu không trả về self.tzinfo.tzname(self)
timetuple() − Trả về một time.struct_time giống như được trả về bởi time.localtime().
atetime.toordinal() − Trả về số thứ tự Gregorian proleptic của ngày tháng.
timestamp() − Trả về dấu thời gian POSIX tương ứng với phiên bản datetime.
isoweekday() − Trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 1, Chủ Nhật là 7.
isocalendar() − Trả về một tuple có tên với ba thành phần: năm, tuần và ngày trong tuần.
isoformat(sep='T', timespec='auto') − Trả về một chuỗi đại diện cho ngày và giờ theo định dạng ISO 8601.
__str__() − Đối với một thể hiện datetime d, str(d) tương đương với d.isoformat(' ').
ctime() − Trả về một chuỗi đại diện cho ngày và giờ:
strftime(format) − Trả về một chuỗi đại diện cho ngày và giờ, được điều khiển bởi một chuỗi định dạng rõ ràng.
__format__(format) − Giống như strftime().
from datetime import datetime, date, time, timezone # Using datetime.combine() d = date(2022, 4, 20) t = time(12, 30) datetime.combine(d, t) # Using datetime.now() d = datetime.now() print (d) # Using datetime.strptime() dt = datetime.strptime("23/04/20 16:30", "%d/%m/%y %H:%M") # Using datetime.timetuple() to get tuple of all attributes tt = dt.timetuple() for it in tt: print(it) # Date in ISO format ic = dt.isocalendar() for it in ic: print(it)
Nó sẽ tạo ra output −
2023-04-20 15:12:49.816343 2020 4 23 16 30 0 3 114 -1 2020 17 4
Đối tượng timedelta đại diện cho khoảng thời gian giữa hai ngày hoặc hai đối tượng thời gian.
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Nội bộ, các thuộc tính được lưu trữ dưới dạng ngày, giây và microgiây. Các đối số khác được chuyển đổi sang những đơn vị đó.
Một mili giây được chuyển đổi thành 1000 vi giây.
Một phút được chuyển đổi thành 60 giây.
Một giờ được chuyển đổi thành 3600 giây.
Một tuần được chuyển đổi thành 7 ngày.
Trong khi đó, ngày, giây và microgiây được chuẩn hóa để đảm bảo rằng cách biểu diễn là duy nhất.
Ví dụ dưới đây cho thấy rằng Python chỉ lưu trữ ngày, giây và micro giây ở cấp độ nội bộ.
from datetime import timedelta delta = timedelta( days=100, seconds=27, microseconds=10, milliseconds=29000, minutes=5, hours=12, weeks=2 ) # Only days, seconds, and microseconds remain print (delta)
Nó sẽ tạo ra output −
114 days, 12:05:56.000010
Ví dụ sau đây cho thấy cách thêm đối tượng timedelta vào đối tượng datetime.
from datetime import datetime, timedelta date1 = datetime.now() date2= date1+timedelta(days = 4) print("Date after 4 days:", date2) date3 = date1-timedelta(15) print("Date before 15 days:", date3)
Nó sẽ tạo ra output −
Date after 4 days: 2023-04-24 18:05:39.509905 Date before 15 days: 2023-04-05 18:05:39.509905
timedelta.min − Đối tượng timedelta âm lớn nhất, timedelta(-999999999).
timedelta.max − Đối tượng timedelta tích cực nhất, timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999).
timedelta.resolution − Sự khác biệt nhỏ nhất có thể giữa các đối tượng timedelta không bằng nhau, timedelta(microseconds=1)
from datetime import timedelta # Getting minimum value min = timedelta.min print("Minimum value:", min) max = timedelta.max print("Maximum value", max)
Nó sẽ tạo ra output −
Minimum value: -999999999 days, 0:00:00 Maximum value 999999999 days, 23:59:59.999999
Vì chỉ có ngày, giây và phần triệu giây được lưu trữ nội bộ, đó là những thuộc tính thể hiện duy nhất cho một đối tượng timedelta .
days − Giữa -999999999 và 999999999 bao gồm cả hai.
seconds − Giữa 0 và 86399 bao gồm cả hai.
microseconds − Giữa 0 và 999999 bao gồm cả hai.
timedelta.total_seconds() − Trả về tổng số giây có trong khoảng thời gian.
from datetime import timedelta year = timedelta(days=365) years = 5 * year print (years) print (years.days // 365) 646 year_1 = years // 5 print(year_1.days)
Nó sẽ tạo ra output −
1825 days, 0:00:00 5 365