Professional Documents
Culture Documents
Tài liệu python
Tài liệu python
VIETNAMSE.
1
datetime— Các loại ngày và giờ cơ bản
Mã nguồn: Lib/datetime.py
Hằng số
Mô datetime-đun xuất các hằng số sau:
2
datetime.MINYEAR¶
Số năm nhỏ nhất được phép trong một datehoặc datetimeđối tượng. MINYEARlà 1.
datetime.MAXYEAR¶
Số năm lớn nhất được phép trong một datehoặc datetimeđối tượng. MAXYEARlà
9999.
datetime.UTC¶
Bí danh cho múi giờ UTC singleton datetime.timezone.utc.
Mới trong phiên bản 3.11.
class datetime.date
Một ngày ngây thơ được lý tưởng hóa, giả sử lịch Gregorian hiện tại
luôn có hiệu lực. Các thuộc tính: year, month, và day.
class datetime.time
Thời gian lý tưởng hóa, không phụ thuộc vào bất kỳ ngày cụ thể nào,
giả sử rằng mỗi ngày có chính xác 24*60*60 giây. (Không có khái niệm
về “giây nhuận” ở đây.) Các thuộc tính: hour, minute, second,
microsecond, và tzinfo.
class datetime.datetime
Một sự kết hợp của một ngày và một thời gian. Thuộc tính: year,
month, day, hour, minute, second, microsecond, và tzinfo.
class datetime.timedelta
Khoảng thời gian thể hiện sự khác biệt giữa hai date, timehoặc
datetimephiên bản đối với độ phân giải micro giây.
class datetime.tzinfo
Một lớp cơ sở trừu tượng cho các đối tượng thông tin múi giờ. Chúng
được sử dụng bởi các lớp datetimevà timeđể cung cấp khái niệm điều
chỉnh thời gian có thể tùy chỉnh (ví dụ: để tính đến múi giờ và/hoặc
thời gian tiết kiệm ánh sáng ban ngày).
class datetime.timezone
3
Một lớp triển khai tzinfolớp cơ sở trừu tượng dưới dạng phần bù cố
định từ UTC.
Mới trong phiên bản 3.2.
Các đối tượng của các loại này là bất biến.
Mối quan hệ của các lớp con:
object
timedelta
tzinfo
timezone
time
date
datetime
Xác định xem một đối tượng là nhận thức hay ngây thơ
Các đối tượng thuộc dateloại luôn ngây thơ.
Một đối tượng thuộc loại timehoặc datetimecó thể nhận thức hoặc ngây thơ.
Một datetimeđối tượng d nhận biết nếu cả hai điều sau đây đều đúng:
1. d.tzinfokhông phảiNone
2. d.tzinfo.utcoffset(d)không trở lạiNone
timedeltaĐối tượng
Một timedeltađối tượng đại diện cho một khoảng thời gian, sự khác biệt giữa hai ngày
hoặc thời gian.
4
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0,
minutes=0, hours=0, weeks=0)
ngày giờ của lớp . timedelta ( ngày = 0 , giây = 0 , micro giây =
0 , mili giây = 0 , phút = 0 , giờ = 0 , tuần = 0 )
Tất cả các đối số là tùy chọn và mặc định là 0. Các đối số có thể là
số nguyên hoặc số float và có thể dương hoặc âm.
Chỉ ngày , giây và micro giây được lưu trữ nội bộ. Các đối số được
chuyển đổi thành các đơn vị đó:
o Một phần nghìn giây được chuyển đổi thành 1000 micro
giây.
o Một phút được chuyển thành 60 giây.
o Một giờ được chuyển đổi thành 3600 giây.
o Một tuần được chuyển đổi thành 7 ngày.
và ngày, giây và micro giây sau đó được chuẩn hóa để biểu diễn
là duy nhất, với
o 0 <= microseconds < 1000000
o 0 <= seconds < 3600*24(số giây trong một ngày)
o -999999999 <= days <= 999999999
Ví dụ sau đây minh họa cách bất kỳ đối số nào ngoài days ,
seconds và microseconds được “hợp nhất” và chuẩn hóa thành ba
thuộc tính kết quả đó:
>>>>>> from datetime import timedelta
>>> delta = timedelta(
... days=50,
... seconds=27,
... microseconds=10,
... milliseconds=29000,
... minutes=5,
... hours=8,
... weeks=2
... )
>>> # Only days, seconds, and microseconds remain
>>> delta
datetime.timedelta(days=64, seconds=29156, microseconds=10)
5
Nếu giá trị chuẩn hóa của ngày nằm ngoài phạm vi được chỉ
định, OverflowErrorsẽ được nâng lên.
Lưu ý rằng việc chuẩn hóa các giá trị âm lúc đầu có thể gây
ngạc nhiên. Ví dụ:
>>>>>> from datetime import timedelta
>>> d = timedelta(microseconds=-1)
>>> (d.days, d.seconds, d.microseconds)
(-1, 86399, 999999)
timedelta.min
timedeltaĐối tượng tiêu cực nhất , timedelta(-999999999).
timedelta.max¶
timedeltaĐối tượng tích cực nhất , .timedelta(days=999999999,
hours=23, minutes=59, seconds=59, microseconds=999999)
timedelta.resolution
timedeltaSự khác biệt nhỏ nhất có thể giữa các đối tượng không bằng
nhau , timedelta(microseconds=1).
6
Chia (3) tổng thời lượng t2 cho đơn vị khoảng
f = t2 / t3
thời gian t3 . Trả về một float đối tượng.
Delta chia cho số float hoặc int. Kết quả được
làm tròn đến bội số gần nhất của
t1 = t2 / f or t1 = t2 / i
timedelta.resolution bằng cách sử dụng nửa-
chẵn.
Sàn được tính toán và phần còn lại (nếu có) bị
t1 = t2 // ihoặc t1 = t2 // t3 loại bỏ. Trong trường hợp thứ hai, một số
nguyên được trả về. (3)
Phần còn lại được tính như một
t1 = t2 % t3
timedeltađối tượng. (3)
Tính thương và số dư: (3) và . q là một số
q, r = divmod(t1, t2) nguyên và r là một đối tượng.q = t1 //
t2r = t1 % t2timedelta
Trả về một timedeltađối tượng có cùng giá
+t1
trị. (2)
tương đương với timedelta(- t1.days , -
-t1
t1.seconds , - t1.microseconds ) và t1 * -1. (1)(4)
tương đương với + t khi , và với - t khi .
abs(t)
(2)t.days >= 0t.days < 0
Trả về một chuỗi ở dạng , trong đó D là âm cho
str(t) âm . (5)[D day[s], ]
[H]H:MM:SS[.UUUUUU]t
Trả về một biểu diễn chuỗi của timedeltađối
repr(t) tượng dưới dạng lệnh gọi hàm tạo với các giá
trị thuộc tính chuẩn.
Ghi chú:
5. Điều này là chính xác nhưng có thể tràn.
6. Điều này là chính xác và không thể tràn.
7. Chia cho 0 tăng ZeroDivisionError.
8. - timedelta.max không thể biểu diễn dưới dạng timedeltađối
tượng.
9. Biểu diễn chuỗi của timedeltacác đối tượng được chuẩn hóa tương
tự như biểu diễn bên trong của chúng. Điều này dẫn đến kết quả
hơi bất thường đối với timedelta âm. Ví dụ:
10. >>>>>> timedelta(hours=-5)
datetime.timedelta(days=-1, seconds=68400)
>>> print(_)
-1 day, 19:00:00
11. Biểu thức sẽ luôn bằng biểu thức trừ khi t3 bằng ; trong
trường hợp đó, cái trước sẽ tạo ra kết quả trong khi cái sau
sẽ tràn.t2 - t3t2 + (-t3)timedelta.max
Ngoài các hoạt động được liệt kê ở trên, timedeltacác đối tượng hỗ
trợ các phép cộng và phép trừ nhất định với datevà datetime các đối
tượng (xem bên dưới).
7
Đã thay đổi trong phiên bản 3.2: Giờ đây hỗ trợ phép chia tầng và
phép chia thực của một timedeltađối tượng cho một đối tượng khác ,
cũng như các phép toán còn lại và hàm. Phép chia thực sự và phép
nhân của một đối tượng với một đối tượng hiện đã được hỗ
trợ.timedeltadivmod()timedeltafloat
So sánh timedeltacác đối tượng được hỗ trợ, với một số cảnh báo.
Các phép so sánh ==hoặc != luôn trả về a bool, bất kể loại đối tượng
được so sánh là gì:
>>>>>> from datetime import timedelta
>>> delta1 = timedelta(seconds=57)
>>> delta2 = timedelta(hours=25, seconds=2)
>>> delta2 != delta1
True
>>> delta2 == 5
False
Đối với tất cả các phép so sánh khác (chẳng hạn như <và >), khi một
timedelta đối tượng được so sánh với một đối tượng thuộc loại khác,
TypeError sẽ được nêu ra:
8
Ví dụ về cách sử dụng: timedelta
Một ví dụ bổ sung về chuẩn hóa:
Ví dụ về timedeltasố học:
date Objects
Một dateđối tượng đại diện cho một ngày (năm, tháng và ngày) trong lịch lý tưởng
hóa, lịch Gregorian hiện tại được mở rộng vô thời hạn theo cả hai hướng.
Ngày 1 tháng 1 của năm 1 được gọi là ngày 1, ngày 2 tháng 1 của năm 1 được gọi là
ngày 2, v.v. 2
9
Nếu một đối số nằm ngoài các phạm vi đó được đưa ra,
ValueErrorsẽ được nêu ra.
Các hàm tạo khác, tất cả các phương thức của lớp:
classmethod date.today()
classmethod date.fromisoformat(date_string)¶
ngày phương pháp lớp học . từ thứ tự ( thứ tự )
Trả về ngày tương ứng với thứ tự Gregorian proleptic, trong đó ngày
1 tháng 1 của năm 1 có thứ tự 1.
ValueError được nâng lên trừ khi 1 <= thứ tự <= date.max.toordinal(). Đối
với bất kỳ ngày d nào, date.fromordinal(d.toordinal()) == d.
classmethod date.fromisocalendar(year, week, day)
Trả về một ngày tương ứng với một date_string được cung cấp ở bất kỳ
định dạng ISO 8601 hợp lệ nào, ngoại trừ các ngày thứ tự (ví dụ: YYYY-
DDD):
10
Date.min
Ngày đại diện sớm nhất, .date(MINYEAR, 1, 1)
Date.max
Ngày đạ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 không bằng
nhau, timedelta(days=1).
Thuộc tính sơ thẩm (chỉ đọc):
date.year¶
Giữa MINYEARvà MAXYEARbao gồm.
date.month¶
Từ 1 đến 12 bao gồm.
date.day¶
Giữa 1 và số ngày trong tháng nhất định của năm nhất định.
Hoạt động được hỗ trợ:
11
hoặc , tương ứng.date1 < date2date1.toordinal() <
date2.toordinal()TypeErrordateNotImplementedtimetuple()dateTypeEr
ror==!=FalseTrue
Trong ngữ cảnh Boolean, tất cả datecác đối tượng được coi là đúng.
Phương thức sơ thẩm:
date.replace(year=self.year, month=self.month, day=self.day)
date.timetuple()¶
Trả lại một time.struct_timeví dụ như được trả về bởi
time.localtime().
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. Ví dụ: date(2002, 12, 4).weekday() == 2, a Thứ Tư. Xem thêm
isoweekday().
date.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. Ví dụ: date(2002, 12, 4).isoweekday() == 3, a Thứ Tư. Xem thêm
ngày trong tuần(), isocalWiki().
date.isocalendar()¶
Trả về một đối tượng tuple được đặt tên với ba thành phần: year,
weekvà weekday.
Lịch ISO là một biến thể được sử dụng rộng rãi của lịch Gregorian. 3
Năm ISO bao gồm 52 hoặc 53 tuần đầy đủ và trong đó một tuần bắt đầu
vào Thứ Hai và kết thúc vào Chủ nhật. Tuần đầu tiên của một năm ISO
là tuần dương lịch (Gregorian) đầu tiên của một năm có Thứ Năm. Đây
được gọi là tuần số 1 và năm ISO của ngày thứ Năm đó giống với năm
Gregorian của nó.
12
Ví dụ: năm 2004 bắt đầu vào Thứ Năm, vì vậy tuần đầu tiên của năm
ISO 2004 bắt đầu vào Thứ Hai, ngày 29 tháng 12 năm 2003 và kết thúc
vào Chủ Nhật, ngày 4 tháng 1 năm 2004:
>>>>>> from datetime import date
>>> date(2003, 12, 29).isocalendar()
datetime.IsoCalendarDate(year=2004, week=1, weekday=1)
>>> date(2004, 1, 4).isocalendar()
datetime.IsoCalendarDate(year=2004, week=1, weekday=7)
Đã thay đổi trong phiên bản 3.9: Kết quả đã thay đổi từ một bộ thành
một bộ có tên .
date.isoformat()¶
Trả về một chuỗi đại diện cho ngày ở định dạng ISO 8601, YYYY-MM-DD:
>>>>>> from datetime import date
>>> date(2002, 12, 4).isoformat()
'2002-12-04'
date.__str__()
Đối với một ngày d , str(d)tương đương với d.isoformat().
date.ctime()¶
Trả về một chuỗi đại diện cho ngày:
>>>>>> from datetime import date
>>> date(2002, 12, 4).ctime()
'Wed Dec 4 00:00:00 2002'
time.ctime(time.mktime(d.timetuple()))
trên các nền tảng nơi hàm C gốc ctime()(có time.ctime()thể gọi nhưng
date.ctime()không gọi) tuân theo tiêu chuẩn C.
date.strftime(format)¶
Trả về một chuỗi đại diện cho ngày, được kiểm soát bởi một chuỗi
định dạng rõ ràng. Mã định dạng đề cập đến giờ, phút hoặc giây sẽ
thấy giá trị 0. Để biết danh sách đầy đủ các chỉ thị định dạng, hãy
xem hành vi strftime() và strptime() .
13
date.__format__(format)¶
Tương tự như date.strftime(). Điều này giúp có thể chỉ định một chuỗi
định dạng cho một dateđối tượng bằng các ký tự chuỗi được định dạng
và khi sử dụng str.format(). Để biết danh sách đầy đủ các chỉ thị
định dạng, hãy xem hành vi strftime() và strptime() .
14
>>> for i in t:
... print(i)
2002 # year
3 # month
11 # day
0
0
0
0 # weekday (0 = Monday)
70 # 70th day in the year
-1
>>> ic = d.isocalendar()
>>> for i in ic:
... print(i)
2002 # ISO year
11 # ISO week number
1 # ISO day number ( 1 = Monday )
datetimeĐối tượng
Một datetimeđối tượng là một đối tượng duy nhất chứa tất cả thông
tin từ một dateđối tượng và một timeđối tượng.
Giống như một dateđối tượng, datetimegiả sử lịch Gregorian hiện tại
được mở rộng theo cả hai hướng; giống như một timeđối tượng,
datetimegiả sử có chính xác 3600*24 giây mỗi ngày.
15
o 0 <= microsecond < 1000000,
o fold in [0, 1].
Nếu một đối số nằm ngoài các phạm vi đó được đưa ra,
ValueErrorsẽ được nêu ra.
classmethod datetime.now(tz=None)
Nếu đối số tùy chọn tz được None chỉ định hoặc không được chỉ định,
thì điều này giống như today(), nhưng, nếu có thể, cung cấp độ chính
xác cao hơn mức có thể nhận được khi đi qua dấu time.time()thời gian
(ví dụ: điều này có thể thực hiện được trên các nền tảng cung cấp
gettimeofday()chức năng C).
Nếu tz không phải là None, thì nó phải là một thể hiện của một
tzinfolớp con và ngày giờ hiện tại được chuyển đổi thành múi giờ của
tz .
Chức năng này được ưa thích hơn today()và utcnow().
classmethod datetime.utcnow()
Trả về ngày và giờ UTC hiện tại, với . tzinfo None
Điều này giống như now(), nhưng trả về ngày và giờ UTC hiện tại,
dưới dạng một datetimeđối tượng ngây thơ. Có thể nhận được thời gian
UTC hiện tại đã biết bằng cách gọi datetime.now(timezone.utc). Xem
thêm now().
Cảnh báo
Bởi vì datetimecác đối tượng ngây thơ được nhiều datetimephương pháp
coi là giờ địa phương, nên sử dụng thời gian nhận thức để biểu thị
thời gian trong UTC. Do đó, cách được đề xuất để tạo một đối tượng
16
biểu thị thời gian hiện tại trong UTC là gọi
datetime.now(timezone.utc).
Đã thay đổi trong phiên bản 3.6: fromtimestamp() có thể trả về các
phiên bản được foldđặt thành 1.
phương thức lớp ngày giờ. utcfromtimestamp ( dấu thời gian )
Trả về UTC datetimetương ứng với dấu thời gian POSIX, với . (Đối
tượng kết quả là ngây thơ.)tzinfo None
Điều này có thể tăng OverflowError, nếu dấu thời gian nằm ngoài phạm
vi giá trị được gmtime()chức năng nền tảng C hỗ trợ và OSErrorkhi
gmtime()không thành công. Điều này thường bị giới hạn trong các năm
từ 1970 đến 2038.
Để có được một datetimeđối tượng nhận biết, hãy gọi fromtimestamp():
datetime.fromtimestamp(timestamp, timezone.utc)
Trên nền tảng tuân thủ POSIX, nó tương đương với biểu thức sau:
datetime(1970, 1, 1, tzinfo=timezone.utc) +
timedelta(seconds=timestamp)
17
ngoại trừ công thức sau luôn hỗ trợ phạm vi năm đầy đủ: giữa
MINYEARvà MAXYEARbao gồm.
Cảnh báo
Bởi vì datetimecác đối tượng ngây thơ được nhiều datetimephương pháp
coi là giờ địa phương, nên sử dụng thời gian nhận thức để biểu thị
thời gian trong UTC. Do đó, cách được đề xuất để tạo đối tượng đại
diện cho dấu thời gian cụ thể trong UTC là
gọi .datetime.fromtimestamp(timestamp, tz=timezone.utc)
Đã thay đổi trong phiên bản 3.3: Tăng OverflowErrorthay vì
ValueErrornếu dấu thời gian nằm ngoài phạm vi giá trị được
gmtime()chức năng nền tảng C hỗ trợ. Nâng cao OSErrorthay vì
ValueErrorthất gmtime()bại.
classmethod datetime.utcfromtimestamp(timestamp)
Trả về datetimetương ứng với thứ tự Gregorian proleptic, trong đó
ngày 1 tháng 1 của năm 1 có thứ tự 1. ValueErrorđược nâng lên trừ
khi . Giờ, phút, giây và micro giây của kết quả đều bằng 0 và là . 1
<= ordinal <= datetime.max.toordinal()tzinfoNone
classmethod datetime.fromordinal(ordinal)¶
Trả về ngày giờ tương ứng với thứ tự Gregorian tiên nghiệm, trong đó
ngày 1 tháng 1 của năm 1 có thứ tự 1. ValueError được tăng trừ khi 1
<= thứ tự <= datetime.max.toordinal(). Giờ, phút, giây và micro giây
của kết quả đều bằng 0 và tzinfo là Không có.
classmethod datetime.combine(date, time, tzinfo=self.tzinfo)
Trả về một đối tượng mới datetimecó thành phần ngày bằng với dateđối
tượng đã cho và thành phần thời gian bằng với timeđối tượng đã cho.
Nếu đối số tzinfo được cung cấp, thì giá trị của nó được sử dụng để
đặt tzinfothuộc tính của kết quả, nếu không thì tzinfothuộc tính của
đối số thời gian sẽ được sử dụng.
19
Trả về datetimetương ứng với date_string , được phân tích cú pháp
theo định dạng .
Điều này tương đương với:
datetime(*(time.strptime(date_string, format)[0:6]))
ValueErrorđược nâng lên nếu không thể phân tích cú pháp chuỗi ngày
và định dạng time.strptime()hoặc nếu nó trả về một giá trị không phải
là bộ thời gian. Để biết danh sách đầy đủ các chỉ thị định dạng, hãy
xem hành vi strftime() và strptime() .
Thuộc tính lớp:
datetime.min
Đại diện sớm nhất datetime, .datetime(MINYEAR, 1, 1, tzinfo=None)
datetime.max
Đại diện mới nhất datetime, .datetime(MAXYEAR, 12, 31, 23, 59, 59,
999999, tzinfo=None)
datetime.resolution
datetimeSự khác biệt nhỏ nhất có thể giữa các đối tượng không bằng
nhau , timedelta(microseconds=1).
Thuộc tính sơ thẩm (chỉ đọc):
datetime.year
ngày giờ. năm
Giữa MINYEARvà MAXYEARbao gồm.
datetime.month
ngày giờ. tháng
Từ 1 đến 12 bao gồm.
datetime.day
ngày giờ. ngày
Giữa 1 và số ngày trong tháng nhất định của năm nhất định.
Datetime.hour
ngày giờ. giờ
Trong range(24).
datetime.minute
ngày giờ. phút
20
Trong range(60).
datetime.second
ngày giờ. thứ hai
Trong range(60).
datetime.microsecond
ngày giờ. micro giây
Trong range(1000000).
datetime.tzinfo
gày giờ. tzinfo ¶
Đối tượng được truyền dưới dạng đối số tzinfo cho datetimehàm tạo
hoặc Nonenếu không có đối số nào được truyền.
datetime.fold
ngày giờ. thứ hai
Trong range(60).
ngày giờ. gấp
Trong . Đượ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. (Một khoảng thời gian lặp lại xảy ra khi đồng hồ
lùi lại vào cuối giờ tiết kiệm ánh sáng ban ngày hoặc khi độ lệch
UTC cho vùng hiện tại bị giảm vì lý do chính trị.) Giá trị 0 (1)
biểu thị thời điểm sớm hơn (sau đó) trong hai thời điểm với cùng một
đại diện thời gian bức tường.[0, 1]
Mới trong phiên bản 3.6.
Hoạt động được hỗ trợ:
21
giờ nào được thực hiện ngay cả khi đầu vào là một đối tượng
nhận biết.
2. Tính toán datetime2 sao cho datetime2 + timedelta ==
datetime1. Ngoài ra, kết quả có cùng tzinfothuộc tính với ngày
giờ đầu vào và không có điều chỉnh múi giờ nào được thực hiện
ngay cả khi đầu vào biết.
3. Phép trừ a datetimetừ a datetimechỉ được xác định nếu cả hai
toán hạng đều ngây thơ hoặc nếu cả hai đều biết. Nếu một người
biết và người kia ngây thơ, TypeErrorđược nuôi dưỡng.
Nếu cả hai đều ngây thơ hoặc cả hai đều biết và có cùng
một tzinfothuộc tính, các tzinfothuộc tính sẽ bị bỏ qua và kết quả
là một timedelta đối tượng t sao cho . Không có điều chỉnh múi giờ
nào được thực hiện trong trường hợp này. datetime2 + t == datetime1
Nếu cả hai đều biết và có tzinfocác thuộc tính khác nhau, thì a-
bhành động như thể a và b lần đầu tiên được chuyển đổi thành thời
gian biểu UTC ngây thơ trước. Kết quả là ngoại trừ việc triển khai
không bao giờ bị tràn.(a.replace(tzinfo=None) - a.utcoffset()) -
(b.replace(tzinfo=None) - b.utcoffset())
Đã thay đổi trong phiên bản 3.3: So sánh bình đẳng giữa các trường
hợp nhận biết và ngây thơ datetime không tăng TypeError.
Ghi chú:
Để ngăn việc so sánh quay trở lại sơ đồ so sánh địa chỉ đối tượng
mặc định, so sánh ngày giờ thường tăng lên TypeErrornếu đối tượng so
sánh khác cũng không phải là một datetimeđối tượng. Tuy nhiên, thay
NotImplementedvào đó, được trả về nếu đối tượng so sánh khác có
timetuple()thuộc tính. Móc này cung cấp cho các loại đối tượng ngày
khác cơ hội thực hiện so sánh kiểu hỗn hợp. Nếu không, khi một
datetime đối tượng được so sánh với một đối tượng thuộc loại khác,
22
TypeErrorsẽ được nâng lên trừ khi phép so sánh là ==hoặc !=. Các
trường hợp sau trả về Falsehoặc True, tương ứng.
Phương thức sơ thẩm:
datetime.date()¶
ngày giờ. ngày ( )
Trả về dateđối tượng có cùng năm, tháng và ngày.
datetime.time()
ngày giờ. thời gian ( )
Trả về timeđối tượng có cùng giờ, phút, giây, micro giây và lần.
tzinfolà None. Xem thêm phương pháp timetz().
Đã thay đổi trong phiên bản 3.6: Giá trị của màn hình đầu tiên được
sao chép vào timeđối tượng được trả về.
datetime.timetz()
ngày giờ. múi giờ ( )
Trả về timeđối tượng có cùng thuộc tính giờ, phút, giây, micro giây,
nếp gấp và tzinfo. Xem thêm phương pháp time().
Đã thay đổi trong phiên bản 3.6: Giá trị của màn hình đầu tiên được
sao chép vào timeđối tượng được trả về.
datetime.replace(year=self.year, month=self.month, day=self.day,
hour=self.hour, minute=self.minute, second=self.second,
microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0)¶
ngày giờ. thay thế ( năm = self.year , month = self.month , day =
self.day , hour = self.hour , minutes = self.minute , second =
self.second , microsecond = self.microsecond , tzinfo =
self.tzinfo , * , gấp = 0 )
Trả về một ngày giờ có cùng thuộc tính, ngoại trừ những thuộc tính
được cung cấp giá trị mới theo bất kỳ đối số từ khóa nào được chỉ
định. Lưu ý rằng tzinfo=Nonecó thể được chỉ định để tạo một ngày giờ
ngây thơ từ một ngày giờ đã biết mà không cần chuyển đổi dữ liệu
ngày và giờ.
Mới trong phiên bản 3.6: Đã thêm foldđối số.
datetime.astimezone(tz=None)¶
ngày giờ. múi giờ ( tz = Không có )
23
Trả về một đối tượng có thuộc tính datetimemới tz , điều chỉnh dữ
liệu ngày và giờ để kết quả có cùng thời gian UTC với self nhưng
theo giờ địa phương của tz .tzinfo
Nếu được cung cấp, tz phải là một thể hiện của một tzinfolớp con và
các phương thức utcoffset()and của nó dst()không được trả về None.
Nếu bản thân là ngây thơ, thì nó được coi là đại diện cho thời gian
trong múi giờ của hệ thống.
Nếu được gọi mà không có đối số (hoặc với tz=None), múi giờ cục bộ
của hệ thống được giả định cho múi giờ đích. Thuộc .tzinfotính của
phiên bản datetime đã chuyển đổi sẽ được đặt thành một phiên bản
timezone có tên vùng và phần bù nhận được từ HĐH.
Nếu self.tzinfo là tz, thì self.astimezone(tz) bằng self: không thực
hiện điều chỉnh dữ liệu ngày hoặc giờ. Mặt khác, kết quả là giờ địa
phương trong múi giờ tz, biểu thị cùng thời gian UTC với chính mình:
sau astz = dt.astimezone(tz), astz - astz.utcoffset() sẽ có cùng dữ
liệu ngày và giờ với dt - dt.utcoffset ().
Nếu bạn chỉ muốn đính kèm một đối tượng múi giờ tz vào một datetime
dt mà không cần điều chỉnh dữ liệu ngày và giờ, hãy sử dụng
dt.replace(tzinfo=tz). Nếu bạn chỉ muốn xóa đối tượng múi giờ khỏi dt
datetime nhận biết mà không cần chuyển đổi dữ liệu ngày và giờ, hãy
sử dụng dt.replace(tzinfo=None).
Lưu ý rằng tzinfo.fromutc()phương thức mặc định có thể được ghi đè
trong một tzinfolớp con để ảnh hưởng đến kết quả được trả về bởi
astimezone(). Bỏ qua các trường hợp lỗi, astimezone()hành động như:
Đã thay đổi trong phiên bản 3.3: giờ đây có thể bỏ qua tz .
Đã thay đổi trong phiên bản 3.6: Giờ đây, phương thức này
astimezone()có thể được gọi trên các phiên bản ngây thơ được cho là
đại diện cho giờ địa phương của hệ thống.
datetime.utcoffset()
Nếu tzinfois None, trả về None, other trả về
self.tzinfo.utcoffset(self)và đưa ra một ngoại lệ nếu cái sau không
trả về Nonehoặc một timedeltađối tượng có cường độ nhỏ hơn một ngày.
24
Đã thay đổi trong phiên bản 3.7: Độ lệch UTC không bị giới hạn trong
toàn bộ số phút.
datetime.dst()¶
Nếu tzinfois None, trả về None, other trả về self.tzinfo.dst(self)và
đưa ra một ngoại lệ nếu cái sau không trả về Nonehoặc một
timedeltađối tượng có cường độ nhỏ hơn một ngày.
Đã thay đổi trong phiên bản 3.7: Độ lệch DST không bị giới hạn trong
toàn bộ số phút.
datetime.tzname()¶
Nếu tzinfolà None, trả về None, khác trả về self.tzinfo.tzname(self),
đưa ra một ngoại lệ nếu cái sau không trả về Nonehoặc một đối tượng
chuỗi,
datetime.timetuple()
Trả lại một time.struct_timeví dụ như được trả về bởi
time.localtime().
25
Cảnh báo
Bởi vì datetimecác đối tượng ngây thơ được nhiều datetimephương pháp
coi là giờ địa phương, nên sử dụng thời gian nhận biết để biểu thị
thời gian trong UTC; do đó, việc sử dụng datetime.utctimetuple()có
thể cho kết quả sai lệch. Nếu bạn có một datetimeUTC đại diện ngây
thơ, hãy sử dụng datetime.replace(tzinfo=timezone.utc)để làm cho nó
biết, tại thời điểm đó bạn có thể sử dụng datetime.timetuple().
datetime.toordinal()
Trả về thứ tự Gregorian proleptic của ngày. Giống như
self.date().toordinal().
datetime.timestamp()¶
Trả về dấu thời gian POSIX tương ứng với datetime phiên bản. Giá trị
trả về tương floattự như giá trị được trả về bởi time.time().
Các phiên bản ngây thơ datetimeđược giả định là đại diện cho giờ địa
phương và phương pháp này dựa vào mktime() chức năng nền tảng C để
thực hiện chuyển đổi. Vì datetime hỗ trợ phạm vi giá trị rộng hơn so
với mktime()trên nhiều nền tảng nên phương pháp này có thể tăng
OverflowErrortrong thời gian xa trong quá khứ hoặc xa trong tương
lai.
Đối với các phiên bản nhận biết datetime, giá trị trả về được tính
như sau:
(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()
Không có phương pháp nào để lấy dấu thời gian POSIX trực tiếp từ một
datetimephiên bản ngây thơ biểu thị thời gian UTC. Nếu ứng dụng của
bạn sử dụng quy ước này và múi giờ hệ thống của bạn không được đặt
thành UTC, thì bạn có thể lấy dấu thời gian POSIX bằng cách cung cấp
tzinfo=timezone.utc:
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
hoặc bằng cách tính toán dấu thời gian trực tiếp:
26
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
datetime.weekday()
ngày giờ. ngày trong tuần ( )
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. Tương tự như self.date().weekday(). Xem thêm
isoweekday().
datetime.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. Tương tự như self.date().isoweekday(). Xem thêm
weekday(), isocalendar().
datetime.isocalendar()
ngày giờ. đẳng lịch ( )
Trả về một bộ được đặt tên với ba thành phần: year, week và weekday.
Giống như self.date().isocalendar().
datetime.isoformat(sep='T', timespec='auto')
Trả về một chuỗi biểu thị ngày và giờ ở định dạng ISO 8601:
Nếu utcoffset()không trả về None, một chuỗi sẽ được thêm vào, tạo ra
phần bù UTC:
Ví dụ:
>>>>>> from datetime import datetime, timezone
>>> datetime(2019, 5, 18, 15, 17, 8, 132263).isoformat()
'2019-05-18T15:17:08.132263'
>>> datetime(2019, 5, 18, 15, 17, tzinfo=timezone.utc).isoformat()
'2019-05-18T15:17:00+00:00'
Đối số tùy chọn sep (mặc định 'T') là dấu tách một ký tự, được đặt
giữa phần ngày và giờ của kết quả. Ví dụ:
>>>>>> from datetime import tzinfo, timedelta, datetime
>>> class TZ(tzinfo):
27
... """A time zone with an arbitrary, constant -06:39 offset."""
... def utcoffset(self, dt):
... return timedelta(hours=-6, minutes=-39)
...
>>> datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
'2002-12-25 00:00:00-06:39'
>>> datetime(2009, 11, 27, microsecond=100, tzinfo=TZ()).isoformat()
'2009-11-27T00:00:00.000100-06:39'
Đối số tùy chọn timespec chỉ định số lượng thành phần bổ sung của
thời gian cần đưa vào (mặc định là 'auto'). Nó có thể là một trong
những điều sau đây:
Các thành phần thời gian bị loại trừ bị cắt bớt, không được làm
tròn.
ValueErrorsẽ được nêu ra trên một đối số timespec không hợp lệ :
Mới trong phiên bản 3.6: Đã thêm đối số thông số thời gian .
datetime.__str__()¶
Ví datetimedụ d , str(d)tương đương với .d.isoformat(' ')
datetime.ctime()
ngày giờ. thời gian ( )
Trả về một chuỗi đại diện cho ngày và giờ:
28
>>>>>> from datetime import datetime
>>> datetime(2002, 12, 4, 20, 30, 40).ctime()
'Wed Dec 4 20:30:40 2002'
Chuỗi đầu ra sẽ không bao gồm thông tin múi giờ, bất kể đầu vào có
nhận biết hay không.
d.ctime()tương đương với:
time.ctime(time.mktime(d.timetuple()))
trên các nền tảng nơi hàm C gốc ctime()(có time.ctime()thể gọi nhưng
datetime.ctime()không gọi) tuân theo tiêu chuẩn C.
datetime.strftime(format)¶
ngày giờ. strftime ( định dạng )
Trả về một chuỗi đại diện cho ngày và giờ, được kiểm soát bởi một
chuỗi định dạng rõ ràng. Để biết danh sách đầy đủ các chỉ thị định
dạng, hãy xem hành vi strftime() và strptime() .
datetime.__format__(format)
ngày giờ. __định dạng__ ( định dạng )
Tương tự như datetime.strftime(). Điều này giúp có thể chỉ định một
chuỗi định dạng cho một datetimeđối tượng bằng các ký tự chuỗi được
định dạng và khi sử dụng str.format(). Để biết danh sách đầy đủ các
chỉ thị định dạng, hãy xem hành vi strftime() và strptime() .
29
>>> # Using datetime.strptime()
>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
>>> dt
datetime.datetime(2006, 11, 21, 16, 30)
Ví dụ bên dưới định nghĩa một tzinfolớp con thu thập thông tin múi
giờ cho Kabul, Afghanistan, sử dụng +4 UTC cho đến năm 1945 và sau
đó là +4:30 UTC sau đó:
from datetime import timedelta, datetime, tzinfo, timezone
class KabulTz(tzinfo):
# Kabul used +4 until 1945, when they moved to +4:30
UTC_MOVE_DATE = datetime(1944, 12, 31, 20, tzinfo=timezone.utc)
30
if dt.year < 1945:
return timedelta(hours=4)
elif (1945, 1, 1, 0, 0) <= dt.timetuple()[:5] < (1945, 1, 1, 0,
30):
# An ambiguous ("imaginary") half-hour range representing
# a 'fold' in time due to the shift from +4 to +4:30.
# If dt falls in the imaginary range, use fold to decide
how
# to resolve. See PEP495.
return timedelta(hours=4, minutes=(30 if dt.fold else 0))
else:
return timedelta(hours=4, minutes=30)
31
>>> print(dt2.utcoffset())
4:30:00
timeĐối tượng
Một timeđối tượng đại diện cho thời gian (cục bộ) trong ngày, không
phụ thuộc vào bất kỳ ngày cụ thể nào và có thể điều chỉnh thông qua
một tzinfođối tượng.
class datetime.time(hour=0, minute=0, second=0, microsecond=0,
tzinfo=None, *, fold=0)
ngày giờ của lớp . thời gian ( giờ = 0 , phút = 0 , giây = 0 , micro
giây = 0 , tzinfo = Không có , * , gấp = 0 )
Tất cả các đối số là tùy chọn. tzinfo có thể là Nonehoặc một thể
hiện của một tzinfolớp con. Các đối số còn lại phải là số nguyên
trong các phạm vi sau:
o 0 <= hour < 24,
o 0 <= minute < 60,
o 0 <= second < 60,
o 0 <= microsecond < 1000000,
o fold in [0, 1].
Nếu một đối số nằm ngoài các phạm vi đó được đưa ra,
ValueErrorsẽ được nêu ra. Tất cả mặc định ngoại 0trừ tzinfo ,
mặc định là None.
Thuộc tính lớp:
time.min¶
thời gian. phút
Đại diện sớm nhất time, .time(0, 0, 0, 0)
32
time.max¶
thời gian. tối đa
Đại diện mới nhất time, .time(23, 59, 59, 999999)
time.resolution¶
thời gian. độ phân giải
timeSự khác biệt nhỏ nhất có thể có giữa các đối tượng không bằng
nhau , timedelta(microseconds=1)mặc dù lưu ý rằng số học trên timecác
đối tượng không được hỗ trợ.
time.hour
thời gian. giờ
Trong range(24).
time.minute¶
thời gian. phút
Trong range(60).
time.second
thời gian. thứ hai ¶
Trong range(60).
time.microsecond
thời gian. micro giây
Trong range(1000000).
time.tzinfo¶
Đối tượng được truyền dưới dạng đối số tzinfo cho timehàm tạo hoặc
Nonenếu không có đối số nào được truyền.
time.fold¶
Trong . Đượ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. (Một khoảng thời gian lặp lại xảy ra khi đồng hồ
lùi lại vào cuối giờ tiết kiệm ánh sáng ban ngày hoặc khi độ lệch
UTC cho vùng hiện tại bị giảm vì lý do chính trị.) Giá trị 0 (1)
biểu thị thời điểm sớm hơn (sau đó) trong hai thời điểm với cùng một
đại diện thời gian bức tường.[0, 1]
Mới trong phiên bản 3.6.
timecác đối tượng hỗ trợ so sánh timevới time, trong đó a được coi
là nhỏ hơn b khi a đứng trước b về mặt thời gian. Nếu một so sánh là
33
ngây thơ và người kia nhận thức được, TypeErrorsẽ được nâng lên nếu
cố gắng so sánh thứ tự. Để so sánh bình đẳng, các trường hợp ngây
thơ không bao giờ bằng các trường hợp nhận thức được.
Nếu cả hai đối tượng so sánh đều nhận biết và có cùng tzinfothuộc
tính, thì thuộc tính chung tzinfosẽ bị bỏ qua và thời gian cơ sở
được so sánh. Nếu cả hai bộ so sánh đều nhận biết và có tzinfocác
thuộc tính khác nhau, thì các bộ so sánh trước tiên được điều chỉnh
bằng cách trừ đi độ lệch UTC của chúng (thu được từ
self.utcoffset()). Để ngăn các phép so sánh loại hỗn hợp quay trở lại
phép so sánh mặc định theo địa chỉ đối tượng, khi một timeđối tượng
được so sánh với một đối tượng thuộc loại khác, TypeErrorsẽ được
nâng lên trừ khi phép so sánh là ==hoặc !=. Các trường hợp sau trả
về Falsehoặc True, tương ứng.
Đã thay đổi trong phiên bản 3.3: So sánh bình đẳng giữa các trường
hợp nhận biết và ngây thơ timekhông tăng TypeError.
Trong ngữ cảnh Boolean, một timeđối tượng luôn được coi là đúng.
Đã thay đổi trong phiên bản 3.5: Trước Python 3.5, một timeđối tượng
được coi là sai nếu nó biểu thị nửa đêm theo giờ UTC. Hành vi này
được coi là tối nghĩa và dễ bị lỗi và đã bị xóa trong Python 3.5.
Xem bpo-13936 để biết chi tiết đầy đủ.
Các nhà xây dựng khác:
time.replace(hour=self.hour, minute=self.minute, second=self.second,
microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0)
thời gian phương pháp lớp học . fromisoformat ( time_string )
Trả về một timetương ứng với một time_string ở bất kỳ định dạng ISO
8601 hợp lệ nào, với các ngoại lệ sau:
a. Độ lệch múi giờ có thể có giây phân số.
b. Dẫn đầu T, thường được yêu cầu trong trường hợp có thể có
sự mơ hồ giữa ngày và giờ, không bắt buộc.
c. Phân số giây có thể có bất kỳ số lượng chữ số nào (bất kỳ
số nào vượt quá 6 sẽ bị cắt bớt).
d. Giờ và phút phân số không được hỗ trợ.
16. Ví dụ:
17. >>>>>> from datetime import time
>>> time.fromisoformat('04:23:01')
datetime.time(4, 23, 1)
>>> time.fromisoformat('T04:23:01')
datetime.time(4, 23, 1)
>>> time.fromisoformat('T042301')
datetime.time(4, 23, 1)
34
>>> time.fromisoformat('04:23:01.000384')
datetime.time(4, 23, 1, 384)
>>> time.fromisoformat('04:23:01,000')
datetime.time(4, 23, 1, 384)
>>> time.fromisoformat('04:23:01+04:00')
datetime.time(4, 23, 1,
tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))
>>> time.fromisoformat('04:23:01Z')
datetime.time(4, 23, 1, tzinfo=datetime.timezone.utc)
>>> time.fromisoformat('04:23:01+00:00')
datetime.time(4, 23, 1, tzinfo=datetime.timezone.utc)
Đối số tùy chọn timespec chỉ định số lượng thành phần bổ sung
của thời gian cần đưa vào (mặc định là 'auto'). Nó có thể là
một trong những điều sau đây:
35
o 'auto': Giống như 'seconds'nếu microsecondlà 0, giống như
'microseconds'nếu không.
o 'hours': Bao gồm hourở định dạng hai chữ số HH.
o 'minutes': Bao gồm hourvà minutetrong HH:MMđịnh dạng.
o 'seconds': Bao gồm hour, minutevà second ở HH:MM:SSđịnh
dạng.
o 'milliseconds': Bao gồm toàn thời gian, nhưng cắt ngắn
phần thứ hai thành mili giây. HH:MM:SS.sssđịnh dạng.
o 'microseconds': Bao gồm toàn thời gian ở
HH:MM:SS.ffffffđịnh dạng.
Ghi chú
Các thành phần thời gian bị loại trừ bị cắt bớt, không được
làm tròn.
ValueErrorsẽ được nâng lên trên một đối số timespec không hợp
lệ .
Ví dụ:
>>>>>> from datetime import time
>>> time(hour=12, minute=34, second=56,
microsecond=123456).isoformat(timespec='minutes')
'12:34'
>>> dt = time(hour=12, minute=34, second=56, microsecond=0)
>>> dt.isoformat(timespec='microseconds')
'12:34:56.000000'
>>> dt.isoformat(timespec='auto')
'12:34:56'
Mới trong phiên bản 3.6: Đã thêm đối số thông số thời gian .
time.__str__()
Trong một thời gian t , str(t)tương đương với t.isoformat().
time.strftime(format)¶
thời gian. strftime ( định dạng )
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. Để biết danh sách đầy đủ các chỉ thị định
dạng, hãy xem hành vi strftime() và strptime() .
time.__format__(format)¶
36
thời gian. __định dạng__ ( định dạng )
Tương tự như time.strftime(). Điều này giúp có thể chỉ định một chuỗi
định dạng cho một timeđối tượng bằng các ký tự chuỗi được định dạng
và khi sử dụng str.format(). Để biết danh sách đầy đủ các chỉ thị
định dạng, hãy xem hành vi strftime() và strptime() .
time.utcoffset()¶
Nếu tzinfois None, trả về None, other trả về
self.tzinfo.utcoffset(None)và đưa ra một ngoại lệ nếu cái sau không
trả về Nonehoặc một timedeltađối tượng có cường độ nhỏ hơn một ngày.
Đã thay đổi trong phiên bản 3.7: Độ lệch UTC không bị giới hạn trong
toàn bộ số phút.
time.dst()¶
Nếu tzinfolà None, trả về None, khác trả về self.tzinfo.dst(None)và
đưa ra một ngoại lệ nếu cái sau không trả về Nonehoặc một
timedeltađối tượng có cường độ nhỏ hơn một ngày.
Đã thay đổi trong phiên bản 3.7: Độ lệch DST không bị giới hạn trong
toàn bộ số phút.
time.tzname()
Nếu tzinfolà None, trả về None, khác trả về
self.tzinfo.tzname(None)hoặc tăng ngoại lệ nếu đối tượng sau không
trả về Nonehoặc đối tượng chuỗi.
tzinfo Objects
class datetime.tzinfo
ngày giờ của lớp . tzinfo
Đây là một lớp cơ sở trừu tượng, nghĩa là lớp này không được khởi
tạo trực tiếp. Định nghĩa một lớp con của tzinfođể nắm bắt thông tin
về một múi giờ cụ thể.
Một thể hiện của (một lớp con cụ thể của) tzinfocó thể được truyền
cho các hàm tạo cho datetimevà timecác đối tượng. Các đối tượng thứ
hai xem các thuộc tính của chúng là theo giờ địa phương và tzinfođối
tượng hỗ trợ các phương thức tiết lộ phần bù giờ địa phương từ UTC,
tên của múi giờ và phần bù DST, tất cả đều liên quan đến một đối
tượng ngày hoặc giờ được truyền cho chúng.
Bạn cần lấy được một lớp con cụ thể và (ít nhất) cung cấp các triển
khai của tzinfocác phương thức tiêu chuẩn cần thiết cho datetimecác
phương thức bạn sử dụng. Mô-đun này datetimecung cấp timezone, một
lớp con cụ thể đơn giản trong tzinfođó có thể biểu thị các múi giờ
có độ lệch cố định từ UTC, chẳng hạn như chính UTC hoặc EST và EDT
của Bắc Mỹ.
Yêu cầu đặc biệt đối với việc tẩy: Một tzinfolớp con phải có một
__init__()phương thức có thể được gọi mà không có đối số, nếu không,
nó có thể được chọn nhưng có thể không được giải nén lại. Đây là một
yêu cầu kỹ thuật có thể được nới lỏng trong tương lai.
Một lớp con cụ thể của tzinfocó thể cần thực hiện các phương pháp
sau. Chính xác những phương pháp nào là cần thiết phụ thuộc vào việc
sử dụng datetimecác đối tượng nhận biết. Nếu nghi ngờ, chỉ cần thực
hiện tất cả chúng.
tzinfo.utcoffset(dt)
38
Trả về phần bù của giờ địa phương từ UTC, dưới dạng một timedeltađối
tượng dương ở phía đông của UTC. Nếu giờ địa phương ở phía tây của
UTC, điều này sẽ là số âm.
Điều này thể hiện tổng phần bù từ UTC; ví dụ: nếu một tzinfođối
tượng đại diện cho cả điều chỉnh múi giờ và DST, utcoffset()thì sẽ
trả về tổng của chúng. Nếu không biết phần bù UTC, hãy trả về None.
Mặt khác, giá trị được trả về phải là một timedeltađối tượng hoàn
toàn nằm giữa -timedelta(hours=24)và timedelta(hours=24) (độ lớn của
phần bù phải nhỏ hơn một ngày). Hầu hết các triển khai utcoffset()có
thể sẽ giống như một trong hai cách sau:
return CONSTANT # fixed-offset class
return CONSTANT + self.dst(dt) # daylight-aware class
Nếu utcoffset()không quay lại None, dst()thì cũng không nên quay lại
None.
tzinfo.dst(dt)
Trả lại điều chỉnh thời gian tiết kiệm ánh sáng ban ngày (DST), dưới
dạng timedelta đối tượng hoặc Nonenếu thông tin DST không được biết.
Trả lại timedelta(0)nếu DST không có hiệu lực. Nếu DST có hiệu lực,
hãy trả lại phần bù dưới dạng timedeltađối tượng (xem utcoffset()để
biết chi tiết). Lưu ý rằng phần bù DST, nếu có, đã được thêm vào
phần bù UTC được trả về bởi utcoffset(), do đó, không cần tham khảo
dst()trừ khi bạn quan tâm đến việc lấy riêng thông tin DST. Ví dụ:
datetime.timetuple()gọi phương thức tzinfo thuộc tính của nó dst()để
xác định cách tm_isdstđặt cờ và tzinfo.fromutc()gọi dst()để tính đến
các thay đổi DST khi vượt qua các múi giờ.
Một thể hiện tz của một tzinfolớp con mô hình hóa cả thời gian tiêu
chuẩn và thời gian ban ngày phải nhất quán theo nghĩa này:
tz.utcoffset(dt) - tz.dst(dt)
phải trả về cùng một kết quả cho mọi dt với Đối với các lớp con lành
mạnh, biểu thức này mang lại “độ lệch chuẩn” của múi giờ, không phụ
thuộc vào ngày hoặc giờ mà chỉ phụ thuộc vào vị trí địa lý. Việc
thực hiện ỷ lại vào việc này nhưng không phát hiện được vi phạm; lập
trình viên có trách nhiệm đảm bảo điều đó. Nếu một lớp con không thể
đảm bảo điều này, nó có thể ghi đè cài đặt mặc định của để hoạt động
39
chính xác với bất kể.datetime dt.tzinfo ==
tztzinfodatetime.astimezone()tzinfotzinfo.fromutc()astimezone()
Hầu hết các triển khai dst()có thể sẽ giống như một trong hai cách
sau:
def dst(self, dt):
# a fixed-offset class: doesn't account for DST
return timedelta(0)
hoặc:
def dst(self, dt):
# Code to set dston and dstoff to the time zone's DST
# transition times based on the input dt.year, and expressed
# in standard local time.
tzinfo.tzname(dt)¶
Trả về tên múi giờ tương ứng với datetimeđối tượng dt , dưới dạng
một chuỗi. Không có gì về tên chuỗi được datetimemô-đun xác định và
không có yêu cầu rằng nó có nghĩa cụ thể. Ví dụ: “GMT”, “UTC”, “-
500”, “-5:00”, “EDT”, “US/Eastern”, “America/New York” đều là những
câu trả lời hợp lệ. Trả lại Nonenếu không biết tên chuỗi. Lưu ý rằng
đây chủ yếu là một phương thức chứ không phải là một chuỗi cố định
bởi vì một số tzinfo lớp con sẽ muốn trả về các tên khác nhau tùy
thuộc vào giá trị cụ thể của dt được truyền, đặc biệt nếu tzinfolớp
này tính thời gian ban ngày.
Việc triển khai mặc định của tzname()raise NotImplementedError.
Các phương thức này được gọi bởi một datetimehoặc timeđối tượng, để
đáp lại các phương thức cùng tên của chúng. Một datetimeđối tượng
chuyển chính nó làm đối số và một timeđối tượng chuyển Nonethành đối
số. Do đó, các phương thức của lớp tzinfocon nên được chuẩn bị để
chấp nhận đối số dt của Nonehoặc của lớp datetime.
Khi Noneđược thông qua, người thiết kế lớp sẽ quyết định phản hồi
tốt nhất. Ví dụ: trả về Nonelà phù hợp nếu lớp muốn nói rằng các đối
40
tượng thời gian không tham gia vào các tzinfogiao thức. Có thể hữu
ích hơn khi utcoffset(None)trả lại phần bù UTC tiêu chuẩn, vì không
có quy ước nào khác để khám phá phần bù tiêu chuẩn.
Khi một datetimeđối tượng được truyền để phản hồi lại một datetime
phương thức, dt.tzinfothì đối tượng đó cũng giống như self .
tzinfocác phương thức có thể dựa vào điều này, trừ khi mã người dùng
gọi tzinfotrực tiếp các phương thức. Mục đích là tzinfocác phương
thức diễn giải dt theo giờ địa phương và không cần lo lắng về các
đối tượng trong các múi giờ khác.
Có một tzinfophương thức nữa mà một lớp con có thể muốn ghi đè:
tzinfo.fromutc(dt)¶
tzinfo. fromutc ( dt )
Điều này được gọi từ datetime.astimezone() việc thực hiện mặc định.
Khi được gọi từ đó, dữ liệu ngày và giờ dt.tzinfocủa self và dt sẽ
được xem là biểu thị thời gian UTC. Mục đích của fromutc()là điều
chỉnh dữ liệu ngày và giờ, trả về một ngày giờ tương đương theo giờ
địa phương của chính bạn .
Hầu hết tzinfocác lớp con sẽ có thể kế thừa fromutc()việc triển khai
mặc định mà không gặp sự cố. Nó đủ mạnh để xử lý các múi giờ có độ
lệch cố định và các múi giờ tính cả thời gian tiêu chuẩn và thời
gian ban ngày, cũng như thời gian ban ngày ngay cả khi thời gian
chuyển đổi DST khác nhau trong các năm khác nhau. Một ví dụ về múi
giờ mà fromutc() việc triển khai mặc định có thể không xử lý chính
xác trong mọi trường hợp là trường hợp mà độ lệch chuẩn (từ UTC) phụ
thuộc vào ngày và giờ cụ thể đã trôi qua, điều này có thể xảy ra vì
lý do chính trị. Việc triển khai mặc định của astimezone()và
fromutc()có thể không tạo ra kết quả bạn muốn nếu kết quả là một
trong những giờ diễn ra vào thời điểm bù trừ tiêu chuẩn thay đổi.
Bỏ qua mã cho các trường hợp lỗi, fromutc()việc triển khai mặc định
hoạt động như sau:
def fromutc(self, dt):
# raise ValueError error if dt.tzinfo is not self
dtoff = dt.utcoffset()
dtdst = dt.dst()
# raise ValueError if dtoff is None or dtdst is None
delta = dtoff - dtdst # this is self's standard offset
if delta:
dt += delta # convert to standard local time
dtdst = dt.dst()
# raise ValueError if dtdst is None
if dtdst:
41
return dt + dtdst
else:
return dt
ZERO = timedelta(0)
HOUR = timedelta(hours=1)
SECOND = timedelta(seconds=1)
class LocalTimezone(tzinfo):
42
return ZERO
Local = LocalTimezone()
def first_sunday_on_or_after(dt):
days_to_go = 6 - dt.weekday()
if days_to_go:
dt += timedelta(days_to_go)
return dt
# US DST Rules
#
# This is a simplified (i.e., wrong for a few cases) set of rules for
US
# DST start and end times. For a complete and up-to-date set of DST
rules
# and timezone definitions, visit the Olson Database (or try pytz):
# http://www.twinsun.com/tz/tz-link.htm
# https://sourceforge.net/projects/pytz/ (might not be up-to-date)
#
# In the US, since 2007, DST starts at 2am (standard time) on the
second
# Sunday in March, which is the first Sunday on or after Mar 8.
DSTSTART_2007 = datetime(1, 3, 8, 2)
# and ends at 2am (DST time) on the first Sunday of Nov.
DSTEND_2007 = datetime(1, 11, 1, 2)
# From 1987 to 2006, DST used to start at 2am (standard time) on the
first
# Sunday in April and to end at 2am (DST time) on the last
# Sunday of October, which is the first Sunday on or after Oct 25.
DSTSTART_1987_2006 = datetime(1, 4, 1, 2)
DSTEND_1987_2006 = datetime(1, 10, 25, 2)
# From 1967 to 1986, DST used to start at 2am (standard time) on the
last
43
# Sunday in April (the one on or after April 24) and to end at 2am (DST
time)
# on the last Sunday of October, which is the first Sunday
# on or after Oct 25.
DSTSTART_1967_1986 = datetime(1, 4, 24, 2)
DSTEND_1967_1986 = DSTEND_1987_2006
def us_dst_range(year):
# Find start and end times for US DST. For years before 1967,
return
# start = end for no DST.
if 2006 < year:
dststart, dstend = DSTSTART_2007, DSTEND_2007
elif 1986 < year < 2007:
dststart, dstend = DSTSTART_1987_2006, DSTEND_1987_2006
elif 1966 < year < 1987:
dststart, dstend = DSTSTART_1967_1986, DSTEND_1967_1986
else:
return (datetime(year, 1, 1), ) * 2
start = first_sunday_on_or_after(dststart.replace(year=year))
end = first_sunday_on_or_after(dstend.replace(year=year))
return start, end
class USTimeZone(tzinfo):
def __repr__(self):
return self.reprname
44
astimezone()
# implementation) passes a datetime with dt.tzinfo is self.
return ZERO
assert dt.tzinfo is self
start, end = us_dst_range(dt.year)
# Can't compare naive to aware objects, so strip the timezone
from
# dt first.
dt = dt.replace(tzinfo=None)
if start + HOUR <= dt < end - HOUR:
# DST is in effect.
return HOUR
if end - HOUR <= dt < end:
# Fold (an ambiguous hour): use dt.fold to disambiguate.
return ZERO if dt.fold else HOUR
if start <= dt < start + HOUR:
# Gap (a non-existent hour): reverse the fold rule.
return HOUR if dt.fold else ZERO
# DST is off.
return ZERO
Lưu ý rằng có những sự tinh tế không thể tránh khỏi hai lần mỗi năm
trong một tzinfo phân lớp chiếm cả thời gian tiêu chuẩn và thời gian
ban ngày, tại các điểm chuyển tiếp DST. Để cụ thể hơn, hãy xem xét
Miền Đông Hoa Kỳ (UTC -0500), trong đó EDT bắt đầu vào phút sau 1:59
45
(EST) vào Chủ nhật thứ hai của tháng 3 và kết thúc vào phút sau 1:59
(EDT) vào Chủ nhật đầu tiên của tháng 11:
UTC 3:MM 4:MM 5:MM 6:MM 7:MM 8:MM
EST 22:MM 23:MM 0:MM 1:MM 2:MM 3:MM
EDT 23:MM 0:MM 1:MM 2:MM 3:MM 4:MM
Khi DST bắt đầu (dòng “bắt đầu”), đồng hồ treo tường địa phương nhảy
từ 1:59 đến 3:00. Thời gian treo tường có dạng 2:MM không thực sự có
ý nghĩa vào ngày đó, vì vậy astimezone(Eastern)sẽ không mang lại kết
quả vào ngày DST bắt đầu. Ví dụ: tại chuyển tiếp mùa xuân năm 2016,
chúng tôi nhận được:hour == 2
>>>>>> from datetime import datetime, timezone
>>> from tzinfo_examples import HOUR, Eastern
>>> u0 = datetime(2016, 3, 13, 5, tzinfo=timezone.utc)
>>> for i in range(4):
... u = u0 + i*HOUR
... t = u.astimezone(Eastern)
... print(u.time(), 'UTC =', t.time(), t.tzname())
...
05:00:00 UTC = 00:00:00 EST
06:00:00 UTC = 01:00:00 EST
07:00:00 UTC = 03:00:00 EDT
08:00:00 UTC = 04:00:00 EDT
Khi DST kết thúc (dòng “kết thúc”), có một vấn đề tiềm ẩn tồi tệ
hơn: có một giờ không thể đánh vần rõ ràng theo giờ địa phương: giờ
cuối cùng của giờ ban ngày. Ở phương Đông, đó là thời gian có dạng
5:MM UTC vào ngày kết thúc thời gian ban ngày. Đồng hồ treo tường
địa phương nhảy từ 1:59 (giờ ban ngày) trở lại 1:00 (giờ chuẩn) một
lần nữa. Giờ địa phương có dạng 1:MM không rõ ràng. astimezone()bắt
chước hành vi của đồng hồ địa phương bằng cách ánh xạ hai giờ UTC
liền kề vào cùng một giờ địa phương. Trong ví dụ về phương Đông,
thời gian UTC có dạng 5:MM và 6:MM đều ánh xạ thành 1:MM khi được
chuyển đổi sang phương Đông, nhưng thời gian trước đó có thuộc tính
được đặt thành 0 và thời gian sau đó được đặt thành 1. Ví dụ fold:
tại Fall back transition năm 2016, chúng tôi nhận được:
>>>>>> u0 = datetime(2016, 11, 6, 4, tzinfo=timezone.utc)
>>> for i in range(4):
... u = u0 + i*HOUR
... t = u.astimezone(Eastern)
46
... print(u.time(), 'UTC =', t.time(), t.tzname(), t.fold)
...
04:00:00 UTC = 00:00:00 EDT 0
05:00:00 UTC = 01:00:00 EDT 0
06:00:00 UTC = 01:00:00 EST 1
07:00:00 UTC = 02:00:00 EST 0
Lưu ý rằng datetimecác trường hợp chỉ khác nhau về giá trị của
foldthuộc tính được coi là bằng nhau khi so sánh.
Các ứng dụng không thể chịu được sự mơ hồ về thời gian nên kiểm tra
rõ ràng giá trị của foldthuộc tính hoặc tránh sử dụng tzinfocác lớp
con kết hợp; không có sự mơ hồ khi sử dụng timezonehoặc bất kỳ
tzinfophân lớp bù cố định nào khác (chẳng hạn như một lớp chỉ đại
diện cho EST (bù cố định -5 giờ) hoặc chỉ EDT (bù cố định -4 giờ)).
Xem thêm
zoneinfo
Mô-đun này datetimecó một timezonelớp cơ bản (để xử lý các giá trị bù
trừ cố định tùy ý từ UTC) và timezone.utc thuộc tính của nó (một thể
hiện múi giờ UTC).
zoneinfođưa cơ sở dữ liệu múi giờ IANA (còn được gọi là cơ sở dữ
liệu Olson) vào Python và việc sử dụng cơ sở dữ liệu này được khuyến
nghị.
Cơ sở dữ liệu múi giờ IANA
Cơ sở dữ liệu Múi giờ (thường được gọi là tz, tzdata hoặc zoneinfo)
chứa mã và dữ liệu biểu thị lịch sử giờ địa phương cho nhiều vị trí
đại diện trên toàn cầu. Nó được cập nhật định kỳ để phản ánh những
thay đổi do các cơ quan chính trị thực hiện đối với ranh giới múi
giờ, độ lệch UTC và quy tắc tiết kiệm ánh sáng ban ngày.
timezone Objects¶
(timezone đối tượng)
Lớp này timezonelà một lớp con của tzinfo, mỗi phiên bản của nó đại
diện cho một múi giờ được xác định bởi một phần bù cố định từ UTC.
Các đối tượng của lớp này không thể được sử dụng để biểu thị thông
tin múi giờ ở những vị trí sử dụng các độ lệch khác nhau trong những
ngày khác nhau trong năm hoặc nơi những thay đổi lịch sử đã được
thực hiện đối với thời gian dân sự.
class datetime.timezone(offset, name=None)¶
47
ngày giờ của lớp . múi giờ ( offset , name = None )
Đối số offset phải được chỉ định làm timedelta đối tượng thể hiện sự
khác biệt giữa giờ địa phương và UTC. Nó phải nằm giữa -
timedelta(hours=24)và timedelta(hours=24), nếu không thì
ValueErrorđược nâng lên.
Đối số tên là tùy chọn. Nếu được chỉ định, nó phải là một chuỗi sẽ
được sử dụng làm giá trị được datetime.tzname()phương thức trả về.
Mới trong phiên bản 3.2.
Đã thay đổi trong phiên bản 3.7: Độ lệch UTC không bị giới hạn trong
toàn bộ số phút.
timezone.utcoffset(dt)
Múi giờ. utcoffset ( dt )
Trả về giá trị cố định được chỉ định khi timezonephiên bản được tạo.
Đối số dt bị bỏ qua. Giá trị trả về là một timedelta thể hiện bằng
với chênh lệch giữa giờ địa phương và UTC.
Đã thay đổi trong phiên bản 3.7: Độ lệch UTC không bị giới hạn trong
toàn bộ số phút.
timezone.tzname(dt)¶
Múi giờ. tzname ( dt )
Trả về giá trị cố định được chỉ định khi timezonephiên bản được tạo.
Nếu tên không được cung cấp trong hàm tạo, tên được trả về bởi
tzname(dt)được tạo từ giá trị offsetnhư sau. Nếu độ lệch là
timedelta(0), tên là “UTC”, nếu không, nó là một chuỗi ở định dạng
UTC±HH:MM, trong đó ± là dấu của offset, HH và MM lần lượt là hai chữ
số của offset.hoursvà offset.minutes.
Đã thay đổi trong phiên bản 3.6: Tên được tạo từ
offset=timedelta(0)giờ là đơn giản 'UTC', không phải 'UTC+00:00'.
timezone.dst(dt)¶
Múi giờ. dst ( dt )
Luôn luôn trở lại None.
timezone.fromutc(dt)¶
Múi giờ. fromutc ( dt )
trở lại . Đối số dt phải là một phiên bản nhận biết, được đặt
thành .dt + offsetdatetimetzinfoself
Thuộc tính lớp:
48
timezone.utc
Múi giờ. utc
Múi giờ UTC, timezone(timedelta(0)).
49
Ngày trong tháng dưới
%d dạng số thập phân 01, 02, …, 31 (9)
không đệm.
Tháng 1, Tháng 2, …,
Tháng là tên viết tắt Tháng 12 (en_US);
%b (1)
của ngôn ngữ. Tháng 1, Tháng 2, …,
Dez (de_DE)
Tháng Giêng, Tháng
Hai, …, Tháng Mười
Tháng là tên đầy đủ Hai (en_US);
%B (1)
của ngôn ngữ. Januar, Februar, …,
Tháng mười hai
(de_DE)
Tháng dưới dạng số
%m 01, 02, …, 12 (9)
thập phân không đệm.
Năm không có thế kỷ
%y dưới dạng số thập 00, 01, …, 99 (9)
phân không đệm.
Năm với thế kỷ dưới 0001, 0002, …, 2013,
%Y (2)
dạng số thập phân. 2014, …, 9998, 9999
Giờ (đồng hồ 24 giờ)
%H dưới dạng số thập 00, 01, …, 23 (9)
phân không đệm.
Giờ (đồng hồ 12 giờ)
%I dưới dạng số thập 01, 02, …, 12 (9)
phân không đệm.
Ngôn ngữ tương
AM, PM (en_US);
%p đương với AM hoặc (1), (3)
sáng, chiều (de_DE)
PM.
Phút dưới dạng số
%M 00, 01, …, 59 (9)
thập phân không đệm.
Thứ hai dưới dạng số
%S 00, 01, …, 59 (4), (9)
thập phân không đệm.
Micro giây dưới dạng
số thập phân, được 000000, 000001, …,
%f (5)
đệm bằng 0 thành 6 999999
chữ số.
UTC offset ở dạng
±HHMM[SS[.ffffff (trống), +0000, -0400,
%z ]](chuỗi trống nếu +1030, +063415, - (6)
đối tượng là ngây 030712.345216
thơ).
Tên múi giờ (chuỗi
%Z trống nếu đối tượng là (trống), UTC, GMT (6)
ngây thơ).
Ngày trong năm dưới
%j dạng số thập phân 001, 002, …, 366 (9)
không đệm.
%U Số tuần của năm (Chủ 00, 01, …, 53 (7), (9)
nhật là ngày đầu tiên
50
của tuần) dưới dạng
số thập phân không
đệm. Tất cả các ngày
trong năm mới trước
Chủ nhật đầu tiên
được coi là trong tuần
0.
Số tuần của năm (Thứ
Hai là ngày đầu tiên
của tuần) dưới dạng
số thập phân không
%W đệm. Tất cả các ngày 00, 01, …, 53 (7), (9)
trong năm mới trước
ngày thứ Hai đầu tiên
được coi là trong tuần
0.
Thứ ba ngày 16 tháng
8 21:30:00 1988
Đại diện ngày và giờ
(en_US);
%c thích hợp của địa (1)
Ngày 16 tháng 8,
phương.
21:30:00, 1988
(de_DE)
16/08/88 (Không có);
Đại diện ngày thích
%x 16/08/1988 (en_US); (1)
hợp của địa phương.
16.08.1988 (de_DE)
Đại diện thời gian
21:30:00 (vi_Mỹ);
%X thích hợp của địa (1)
21:30:00 (de_DE)
phương.
Một '%'nhân vật
%% %
theo nghĩa đen.
Một số chỉ thị bổ sung không bắt buộc theo tiêu chuẩn C89 được đưa
vào để thuận tiện. Tất cả các tham số này đều tương ứng với các giá
trị ngày tháng theo tiêu chuẩn ISO 8601.
51
thể thay thế cho nhau với chỉ thị số năm và tuần ở trên. Việc gọi
strptime()với các chỉ thị ISO 8601 không đầy đủ hoặc không rõ ràng
sẽ làm tăng lỗi ValueError.
Bộ mã định dạng đầy đủ được hỗ trợ khác nhau giữa các nền tảng, bởi
vì Python gọi strftime()chức năng của thư viện nền tảng C và các
biến thể nền tảng là phổ biến. Để xem toàn bộ mã định dạng được hỗ
trợ trên nền tảng của bạn, hãy tham khảo tài liệu strftime(3) . Cũng
có sự khác biệt giữa các nền tảng trong việc xử lý các thông số định
dạng không được hỗ trợ.
Mới trong phiên bản 3.6:%G và %uđã %Vđược thêm vào.
Technical Detail
ngoại trừ khi định dạng bao gồm các thành phần giây phụ hoặc thông
tin bù múi giờ, được hỗ trợ trong datetime.strptimenhưng bị loại bỏ
bởi time.strptime.
Đối với timecác đối tượng, không nên sử dụng các mã định dạng cho
năm, tháng và ngày vì timecác đối tượng không có các giá trị như
vậy. Nếu chúng vẫn được sử dụng, 1900chúng sẽ được thay thế cho năm,
1tháng và ngày.
Đối với datecác đối tượng, không nên sử dụng mã định dạng cho giờ,
phút, giây và micro giây vì datecác đối tượng không có giá trị như
vậy. Nếu chúng vẫn được sử dụng, 0hãy thay thế cho chúng.
Vì lý do tương tự, việc xử lý các chuỗi định dạng chứa các điểm mã
Unicode không thể được biểu thị trong bộ ký tự của ngôn ngữ hiện tại
cũng phụ thuộc vào nền tảng. Trên một số nền tảng, các điểm mã như
vậy được giữ nguyên trong đầu ra, trong khi trên các nền tảng khác,
thay vào đó, strftimecó thể tăng UnicodeErrorhoặc trả về một chuỗi
trống.
52
Ghi chú:
Vì định dạng phụ thuộc vào ngôn ngữ hiện tại nên cần thận trọng khi
đưa ra các giả định về giá trị đầu ra. Thứ tự trường sẽ khác nhau
(ví dụ: “tháng/ngày/năm” so với “ngày/tháng/năm”) và đầu ra có thể
chứa các ký tự Unicode được mã hóa bằng mã hóa mặc định của ngôn ngữ
(ví dụ: nếu ngôn ngữ hiện tại là , thì mặc ja_JPđịnh mã hóa có thể
là bất kỳ một trong số eucJP, SJIShoặc utf-8; sử dụng
locale.getlocale() để xác định mã hóa của ngôn ngữ hiện tại).
Phương pháp này strptime()có thể phân tích cú pháp các năm trong
phạm vi [1, 9999] đầy đủ, nhưng các năm < 1000 phải được điền bằng 0
cho chiều rộng 4 chữ số.
Đã thay đổi trong phiên bản 3.2: Trong các phiên bản trước,
strftime()phương thức bị giới hạn trong các năm >= 1900.
Đã thay đổi trong phiên bản 3.3: Trong phiên bản 3.2,
strftime()phương pháp bị giới hạn ở số năm >= 1000.
Khi được sử dụng với strptime()phương thức, %plệnh chỉ ảnh hưởng đến
trường giờ đầu ra nếu %Ilệnh được sử dụng để phân tích cú pháp giờ.
Không giống như timemô-đun, datetimemô-đun không hỗ trợ giây nhảy
vọt.
Khi được sử dụng với strptime()phương thức, %flệnh chấp nhận từ một
đến sáu chữ số và số không ở bên phải. %flà một phần mở rộng cho tập
hợp các ký tự định dạng trong tiêu chuẩn C (nhưng được triển khai
riêng trong các đối tượng ngày giờ và do đó luôn có sẵn).
Đối với một đối tượng ngây thơ, các mã định dạng %zvà %Zđược thay
thế bằng các chuỗi rỗng.
Đối với một đối tượng nhận thức:
%z
Đã thay đổi trong phiên bản 3.7: Độ lệch UTC không bị giới hạn trong
toàn bộ số phút.
53
Đã thay đổi trong phiên bản 3.7: Khi %zlệnh được cung cấp cho
strptime()phương thức, phần bù UTC có thể có dấu hai chấm làm dấu
phân cách giữa giờ, phút và giây. Ví dụ: '+01:00:00'sẽ được phân
tích cú pháp dưới dạng bù trừ một giờ. Ngoài ra, việc cung cấp
'Z'giống hệt với '+00:00'.
%Z
b. Trong strftime(), %Zđược thay thế bằng một chuỗi trống
nếu tzname()trả về None; mặt khác %Zđược thay thế bằng giá
trị được trả về, giá trị này phải là một chuỗi.
c. strptime()chỉ chấp nhận các giá trị nhất định cho %Z:
i. bất kỳ giá trị nào time.tznamecho ngôn ngữ máy của
bạn
ii. các giá trị được mã hóa cứng UTCvàGMT
54
3
Xem hướng dẫn của RH van Gent về toán học của lịch ISO 8601 để có
giải thích tốt.
4
Vượt qua sẽ thất bại vì không phải là một năm
nhuận.datetime.strptime('Feb 29', '%b %d')1900
55