Trong bài đăng này, chúng ta sẽ đi sâu vào mô-đun ngày giờ của Python và khám phá cách chúng ta có thể triển khai hiệu quả dữ liệu ngày và giờ vào mã Python của mình
Bất kể bạn đang theo đuổi lĩnh vực lập trình Python nào, đây là mô-đun cần phải biết với vô số ứng dụng và rất nhiều ứng dụng nghề nghiệp chuyên nghiệp
Bắt đầu nào
điều kiện tiên quyết. Người đọc dự kiến sẽ có kiến thức làm việc về ngôn ngữ lập trình Python
Mục lục
- Giới thiệu về Python Ngày giờ
- Đối tượng nhận thức Vs Naive
- Các lớp học
- ngày giờ. ngày tháng
- Tạo đối tượng ngày tháng
- Các phương thức lớp ngày quan trọng
- ngày định dạng
- strftime cho đối tượng ngày
- ngày giờ. thời gian
- Tạo đối tượng thời gian
- strftime cho đối tượng thời gian
- Các phương thức lớp thời gian quan trọng
- ngày giờ. múi giờ
- ngày giờ. ngày giờ
- Tạo đối tượng ngày giờ
- datetime từ định dạng ISO
- Kết hợp các đối tượng ngày và giờ thành datetime
- Số học với các đối tượng datetime
- strftime và strptime cho datetime
- dấu thời gian
- Đọc thêm/Tham khảo
- Phần kết luận
Giới thiệu về Python Ngày giờ
Mô-đun datetime của Python chứa nhiều lớp khác nhau để biểu diễn và thao tác ngày và giờ. Các lớp quan trọng trong datetime là date, time, datetime, timedelta, tzinfo, timezone. Chúng ta sẽ xem xét ngắn gọn về các đối tượng ngày, giờ và timedelta và chi tiết hơn về các đối tượng datetime. Múi giờ không được đề cập trong bài viết này
Đối tượng nhận thức Vs Naive
Các đối tượng Ngày và Giờ chứa thông tin múi giờ và giờ tiết kiệm ánh sáng ban ngày [DST] được gọi là các đối tượng nhận biết. Một đối tượng nhận thức đại diện cho một thời điểm không thể diễn giải và có thể định vị chính nó so với các đối tượng nhận thức khác. Các đối tượng ngây thơ đơn giản hơn và đại diện cho UTC hoặc giờ địa phương, v.v. và không thể xác định vị trí của chúng so với các đối tượng nhận thức khác
đối tượng ngày là ngây thơ. đối tượng ngày giờ và thời gian có thể ngây thơ hoặc nhận thức
Các lớp học
ngày giờ. ngày tháng
Tạo đối tượng ngày tháng
Một đối tượng ngày đại diện cho một ngày. Hàm tạo cho các đối tượng ngày là ngày [năm, tháng, ngày]. Một ngày cũng có thể được tạo từ một ngày hiện có bằng cách sử dụng phương thức thay thế để thay thế năm/tháng/ngày. Chúng ta cũng có thể thiết lập ngày trong tuần
# date constructor >>> d = date [1999, 5, 26] # methods to get data >>> d.day 26 >>> d.month 5 >>> d.year 1999 # Monday = 0, Sunday = 6 >>> d.weekday[] 2 # Monday = 1, Sunday = 7 >>>> d.isoweekday[] 3 >>> d.replace [month=11] datetime.date[1999, 11, 26]
Các phương thức lớp ngày quan trọng
Các phương thức sau đây được định nghĩa trên lớp ngày và cung cấp thông tin về phạm vi ngày được hỗ trợ bởi lớp ngày
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:00
ngày định dạng
Đối tượng ngày tháng có thể được định dạng theo nhiều cách khác nhau bằng cách sử dụng các phương thức khác nhau của lớp ngày tháng. strftime là một phương pháp định dạng mạnh mẽ hỗ trợ một số định dạng. Chúng ta sẽ xem xét nó một cách chi tiết trong phần tiếp theo
>>> d = date [1999, 5, 26] >>> d.isoformat[] '1999-05-26' >>> d.ctime[] 'Wed May 26 00:00:00 1999' >>> d.strftime['%d%m%y'] '260599'
strftime cho đối tượng ngày
Cú pháp chung của strftime như sau
datetime.date.strftime[format_string]
strftime là một phương thức thể hiện trên các đối tượng datetime, date, time. Nó chuyển đổi một đối tượng ngày thành một chuỗi được định dạng. Nó hỗ trợ nhiều chuỗi định dạng được mô tả chi tiết trong Tài liệu Python. Trong phần này, chúng ta xem xét một số ví dụ về định dạng strftime trong ngữ cảnh của đối tượng ngày tháng
Các mã định dạng cho giờ, phút, giây, micro giây không được sử dụng ở đây vì chúng không áp dụng cho các đối tượng ngày tháng. Nếu được sử dụng, chúng được thay thế bằng 0
>>> d.strftime['%A %B %Y'] 'Wednesday May 1999' >>> d.strftime['%a %b %y'] 'Wed May 99' # %j = day of the year >>> d.strftime['%a %b %y %j'] 'Wed May 99 146' # %U = week of the year [Sunday = 1] >>> d.strftime['%j %U'] '146 21'
ngày giờ. thời gian
Một đối tượng thời gian đại diện cho một thời gian trong ngày, không phụ thuộc vào ngày. Nó có thể được điều chỉnh bằng đối tượng múi giờ [tzinfo]. Số học không được hỗ trợ trên các đối tượng thời gian
Tạo đối tượng thời gian
Có thể tạo một đối tượng thời gian bằng cách sử dụng hàm tạo thời gian, từ một đối tượng thời gian hiện có bằng cách sử dụng phương thức thay thế [để thay thế giờ/phút/giây/micro giây] hoặc từ một chuỗi có định dạng iso
Hàm tạo cho đối tượng thời gian như sau
datetime.time[hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0
from datetime import time >>> t = time[12, 25, 9] >>> t.hour 12 >>> t.second 9 >>> t.minute 25 >>> t.microsecond 0 >>> t.isoformat[] '12:25:09' >>> t.strftime['%H:%M:%S'] '12:25:09' # New date from existing date by replacing minute >>> t2 = t.replace[minute=44] >>> t2.isoformat[] '12:44:09' # new time from isoformatted string >>> t3 = time.fromisoformat['14:45:59'] >>> t3 datetime.time[14, 45, 59] >>> t3.isoformat[] '14:45:59'
strftime cho đối tượng thời gian
strftime là một phương thức thể hiện trên các đối tượng datetime, date, time. Nó chuyển đổi một đối tượng thời gian thành một chuỗi được định dạng. Nó hỗ trợ nhiều chuỗi định dạng được mô tả chi tiết trong Tài liệu Python. Trong phần này, chúng ta xem xét một số ví dụ về định dạng strftime trong ngữ cảnh của đối tượng time
Các chuỗi định dạng cho năm, tháng và ngày không được sử dụng ở đây vì chúng không áp dụng cho các đối tượng thời gian. Nếu được sử dụng,
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:008 được thay thế cho năm và
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:009 cho tháng và ngày
>>> t = time[12, 25, 9] # 24-hour clock >>> t.strftime['%H:%M:%S'] '14:45:59' # 12-hour clock >>> t.strftime['%I:%M:%S %p'] '02:45:59 PM' # 1 substituted for month, day, 1900 for year >>> t.strftime['%c'] 'Mon Jan 1 14:45:59 1900'
Các phương thức lớp thời gian quan trọng
Các phương thức sau được định nghĩa trên lớp thời gian và cung cấp thông tin về phạm vi thời gian được hỗ trợ bởi lớp thời gian
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:000
ngày giờ. múi giờ
timedelta là khoảng thời gian thể hiện sự khác biệt giữa 2 đối tượng date/time/datetime với độ chính xác micro giây. Điều quan trọng cần nhớ là số học không được hỗ trợ trên các đối tượng thời gian. Do đó, chúng ta phải chuyển đổi các đối tượng thời gian thành các đối tượng ngày giờ với bất kỳ ngày hợp lệ nào và sau đó tính toán sự khác biệt. Ngoài ra, một đối tượng ngày giả có thể được kết hợp với từng đối tượng thời gian và các đối tượng ngày giờ kết quả có thể được sử dụng để tính toán sự khác biệt
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:001
ngày giờ. ngày giờ
datetime là một đối tượng quan trọng của mô-đun datetime, chứa thông tin từ một đối tượng ngày và giờ
Tạo đối tượng ngày giờ
các đối tượng ngày giờ có thể được tạo bằng hàm tạo, từ chuỗi iso, dấu thời gian POSIX, dấu thời gian UTC, kết hợp các đối tượng ngày và giờ. Ngày và giờ hiện tại cũng có thể được trả về bằng các phương thức như now[] và today[]. Chúng tôi xem xét một số phương pháp dưới đây. Để biết chuyên luận toàn diện về cách tạo đối tượng ngày giờ, hãy xem tài liệu Python
Định dạng hàm tạo như sau
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:000
ngày giờ. now[] có thể được sử dụng để lấy ngày, giờ địa phương hiện tại dưới dạng đối tượng datetime
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:001
datetime từ định dạng ISO
Một đối tượng datetime có thể được tạo từ một chuỗi có định dạng ISO như sau
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:002
Kết hợp các đối tượng ngày và giờ thành datetime
các đối tượng ngày và giờ có thể được kết hợp thành một đối tượng ngày giờ bằng phương thức kết hợp
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:003
Số học với các đối tượng datetime
Có thể thêm hoặc bớt các đối tượng ngày giờ vào/bớt đối tượng timedelta để tạo ra một đối tượng ngày giờ. Ví dụ bên dưới cộng và trừ một múi giờ 30 ngày cho ngày hiện tại để tạo ra các đối tượng ngày giờ, sau 1 tháng và sớm hơn 1 tháng so với ngày hiện tại
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:004
strftime và strptime cho datetime
strftime là một phương thức để chuyển đổi một đối tượng datetime thành một chuỗi được định dạng dưới sự kiểm soát của một chuỗi định dạng. strptime là một phương thức lớp datetime chuyển đổi một chuỗi biểu thị ngày giờ thành một đối tượng ngày giờ bằng cách sử dụng chuỗi định dạng
Các ví dụ của strftime
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:005
Các ví dụ của strptime
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:006
dấu thời gian
Dấu thời gian là một cách thể hiện các đối tượng ngày giờ dưới dạng một kỷ nguyên UNIX i. e. số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 UTC. Rất đơn giản để chuyển đổi giữa đối tượng ngày giờ và dấu thời gian
# the earliest representable date >>> print [date.min] 0001-01-01 # the latest representable date >>> print [date.max] 9999-12-31 # the smallest possible difference between 2 non-equal date objects. >>> print [date.resolution] 1 day, 0:00:007
Đọc thêm/Tham khảo
Bạn đã sẵn sàng tìm hiểu thêm về Python datetime hoặc Python nói chung chưa?
- Tài liệu Python – datetime
- Pythonic. com – chức năng ngày trong tuần
- W3Schools – ngày giờ
- Tài liệu Python – hành vi strftime và strptime
- Diều. com – Trừ một ngày giờ. time từ một đối tượng khác bằng cách sử dụng datetime. phối hợp
- Howchoo. com – Làm việc với các đối tượng datetime và timezone trong Python
- kdnuggets – Cách sử dụng datetime của Python
- Zenva – Python Mini-Degree
Phần kết luận
Và chúng ta đã có nó – bây giờ bạn đã hiểu rõ hơn về mô-đun ngày giờ trong Python và cách bạn có thể sử dụng nó cho bất cứ điều gì bạn có thể cần trong một chương trình Python. Như chúng ta đã thảo luận, mô-đun ngày giờ trong Python có nhiều lớp khác nhau để xử lý ngày và giờ. Các lớp chính là ngày, giờ, datetime, timedelta, tzinfo và múi giờ. Lớp date chỉ đại diện cho một ngày, đối tượng time đại diện cho thời gian không phụ thuộc vào ngày và datetime đại diện cho cả ngày và giờ
Hơn nữa, chúng tôi cũng chỉ ra cách có thể tạo các đối tượng ngày giờ theo nhiều cách khác nhau – sử dụng hàm tạo, kết hợp các đối tượng ngày và giờ, v.v. Chúng tôi cũng khám phá định dạng. strftime cho phép chúng ta biểu diễn một đối tượng ngày/giờ/ngày giờ dưới dạng chuỗi sử dụng chuỗi định dạng làm hướng dẫn. strptime sử dụng một chuỗi định dạng để chuyển đổi một chuỗi chứa ngày, giờ thành một đối tượng datetime
Tuy nhiên, có nhiều điều để học hỏi từ đây. Mặc dù bài viết này không đề cập đến nó, nhưng mô-đun hỗ trợ tạo và thao tác ngày và giờ ở các múi giờ khác nhau, giúp bạn có nhiều sức mạnh hơn cho nhu cầu lập trình Python của mình. Bạn cũng có thể khám phá các khái niệm khác liên quan đến ngày, chẳng hạn như nhận thông tin Giờ tiết kiệm ánh sáng ban ngày, các kỹ thuật khác để xử lý múi giờ địa phương, v.v.
Bất kể, với những công cụ này, bạn có thể nhanh chóng đạt được thành công và xây dựng các chương trình theo mong muốn của mình. Chúng tôi chúc bạn may mắn với các chương trình Python của mình