Python - Date and Time

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

What are Tick Intervals

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).

Example

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.

What is TimeTuple?

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

Getting the Current Time

Để 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)

Getting the Formatted Time

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

Getting the Calendar for a Month

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

The time Module

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.

The calendar Module

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).

Python datetime Module

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.

Python date Object

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.

Syntax

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.

Example

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 class attributes

  • 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.

Example

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

Class Methods in Date Class

  • 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ự.

Example

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

Instance Methods in Date Class

  • 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().

Example

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

Python time Module

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.

Syntax

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.

Example

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, in 
    time4 = time(hour = 26)
ValueError: hour must be in 0..23

Class attributes

  • 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.

Example

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

Instance attributes

  • 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.

Example

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

Instance Methods of time Object

  • 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ệ.

Python datetime object

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.

Syntax

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.

Example

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

Class attributes

  • 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).

Example

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

Instance Attributes of datetime Object

  • 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.

Example

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

Class Methods of datetime Object

  • 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.

Instance Methods of datetime Object

  • 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().

Example

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

Python timedelta Object

Đố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.

Syntax

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.

Example

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

Example

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

Class Attributes of timedelta Object

  • 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)

Example

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

Instance Attributes of timedelta Object

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.

Instance Methods of timedelta Object

timedelta.total_seconds() − Trả về tổng số giây có trong khoảng thời gian.

Example

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