Ngày và giờ là một trong những chủ đề lộn xộn nhất trên thế giới. Dòng thời gian không bao giờ thay đổi dù chỉ một giây kể từ buổi bình minh của vũ trụ và dường như chúng ta vẫn không thể thống nhất về cách biểu diễn ngày và giờ toàn cầu. Có các ISO, UTC, GMT, EST, BST, IST về thời gian gây nhầm lẫn cho những người chỉ muốn biết thời gian ở London bất cứ khi nào họ muốn. Và, thậm chí đừng để tôi bắt đầu với Giờ tiết kiệm ánh sáng ban ngày mà bây giờ EU muốn bỏ phiếu chống lại vào năm 2021
Điều tương tự cũng xảy ra với ngày tháng. Có rất nhiều 'tiêu chuẩn' quốc tế về định dạng ngày, bạn gần như có thể chỉ định từng định dạng cho một quốc gia riêng lẻ. Sự nhầm lẫn khổng lồ về ngày và giờ này cũng thường len lỏi vào các ngôn ngữ lập trình. Tuy nhiên, thế giới lập trình có tổ chức hơn một chút so với phần còn lại của thế giới. Đầu tư thời gian và thực hành để tìm hiểu về DateTime sẽ giúp bạn chuẩn bị cho mọi nhiệm vụ liên quan đến chuỗi thời gian
Hôm nay, chúng ta sẽ nói về các đối tượng ngày tháng trong Python thông qua gói có sẵn
d1 = dt.date[2020, 11, 19]1
>>> d1datetime.date[2020, 11, 19]
Đối tượng ngày
Python có các kiểu dữ liệu tích hợp cho các loại dữ liệu khác nhau. Nó cung cấp một kiểu dữ liệu riêng cho các đối tượng ngày thông qua gói
d1 = dt.date[2020, 11, 19]2. Việc có một kiểu đặc biệt cho ngày tháng cung cấp nhiều tính năng như thực hiện toán học về ngày tháng, dễ dàng chuyển đổi chúng sang các định dạng khác nhau, điều sẽ không khả dụng nếu bạn làm việc trên chúng dưới dạng chuỗi
>>> d1datetime.date[2020, 11, 19]
Chúng tôi có thể nhập các hàm và phương thức riêng lẻ hoặc bạn có thể nhập toàn bộ gói với bí danh
d1 = dt.date[2020, 11, 19]3
>>> d1datetime.date[2020, 11, 19]
import datetime as dt
# or
from datetime import date
Hãy tạo một đối tượng ngày tháng
d1 = dt.date[2020, 11, 19]
>>> d1datetime.date[2020, 11, 19]
Các đối tượng ngày giờ có thể được tạo bằng hàm
d1 = dt.date[2020, 11, 19]4. Nó chấp nhận các đối số ở định dạng YYYY-MM-DD tiêu chuẩn. Sau khi bạn có một đối tượng ngày tháng, nó có nhiều thuộc tính hữu ích. Bạn có thể dễ dàng truy cập các thành phần riêng lẻ với các thuộc tính của đối tượng ngày tháng
>>> d1datetime.date[2020, 11, 19]
Truy cập năm
>>> d1.year2020
Truy cập tháng
>>> d1.month11
Truy cập ngày
Bạn cũng có thể tìm ra ngày trong tuần với một chức năng đặc biệt
>>> d1.weekday[]3
Các ngày trong tuần được đánh số từ 0 giống như mọi thứ trong Python. Vì vậy, 3 có nghĩa là thứ năm. Ngoài ra còn có một chức năng thay thế cho các ngày trong tuần bình thường
d1 = dt.date[2020, 11, 19]0
>>> d1datetime.date[2020, 11, 19]
Bạn cũng có thể xây dựng các đối tượng ngày tháng từ các chuỗi được định dạng theo tiêu chuẩn ISO
Tiêu chuẩn ISO 8601 là định dạng ngày toàn cầu trong đó ngày được biểu thị ở định dạng YYYY-MM-DD. [Luôn là năm có 4 chữ số, thêm số 0 vào bên trái cho các tháng và ngày có một chữ số trong “chuỗi”]
Bạn cũng có thể lấy ngày hôm nay thông qua
d1 = dt.date[2020, 11, 19]5
>>> d1datetime.date[2020, 11, 19]
d1 = dt.date[2020, 11, 19]2
>>> d1datetime.date[2020, 11, 19]
Toán Với Ngày, Timedelta
Làm toán ngày tháng chưa bao giờ là dễ, không phải ai cũng biết tháng nào có 30, 31 ngày. Nhưng với Python, tất cả đều đơn giản với
d1 = dt.date[2020, 11, 19]2
>>> d1datetime.date[2020, 11, 19]
Kết quả của phép trừ hai ngày trả về đối tượng
d1 = dt.date[2020, 11, 19]7 đưa chúng ta đến mô-đun phụ
>>> d1datetime.date[2020, 11, 19]
d1 = dt.date[2020, 11, 19]8.
>>> d1datetime.date[2020, 11, 19]
d1 = dt.date[2020, 11, 19]8 xử lý tất cả các phép toán bí mật để trả về ngày chính xác có tính đến năm nhuận, ngày trong tháng, v.v. Giả sử, bạn muốn tìm ngày trong tuần sau 60 ngày. Bạn sẽ làm điều này như thế nào?
>>> d1datetime.date[2020, 11, 19]
Đây là nơi các đối tượng
d1 = dt.date[2020, 11, 19]8 xuất hiện. Chúng có thể biểu thị khoảng thời gian lên tới mili giây bằng cách cung cấp các đối số cần thiết. Ví dụ: để tìm ngày trong tuần sau 60 ngày, chúng ta nên tạo khoảng thời gian là 60 ngày bằng cách sử dụng
>>> d1datetime.date[2020, 11, 19]
d1 = dt.date[2020, 11, 19]8
>>> d1datetime.date[2020, 11, 19]
Bây giờ, chúng ta có thể sử dụng hàm
>>> d1.year20202 để tìm ngày trong tuần
d1 = dt.date[2020, 11, 19]0
>>> d1datetime.date[2020, 11, 19]
Vì vậy, ngày trong tuần sẽ là thứ Hai sau 60 ngày. Đây là tất cả các thông số của
d1 = dt.date[2020, 11, 19]8
>>> d1datetime.date[2020, 11, 19]
Mặc dù bạn có thể thêm phút, mili giây và micro giây, nhưng
d1 = dt.date[2020, 11, 19]8 làm tròn mọi thứ lên đến một khoảng thời gian chỉ biểu thị ngày, giây và micro giây. Vậy, sau 2017 năm, 311 ngày, 23 giờ, 53 phút [đều là số nguyên tố] sẽ là ngày nào sau 2017 năm, 311 ngày, 23 giờ, 53 phút
>>> d1datetime.date[2020, 11, 19]
Sau khi bạn có một đối tượng
d1 = dt.date[2020, 11, 19]8, bạn chỉ có thể truy cập nó dưới dạng ngày hoặc giây
>>> d1datetime.date[2020, 11, 19]
Biến ngày thành chuỗi
Mặc dù các đối tượng ngày tháng rất dễ làm việc, nhưng khi lưu ngày tháng hoặc sử dụng ngày tháng làm tên tệp hoặc thực hiện các thao tác tương tự, bạn phải chuyển đổi chúng thành chuỗi. Có một số phương pháp tùy thuộc vào nhu cầu của bạn. Đầu tiên là chuyển đổi ngày thành tiêu chuẩn ISO 8601
d1 = dt.date[2020, 11, 19]4
>>> d1datetime.date[2020, 11, 19]
Có ngày dưới dạng chuỗi ISO 8601 rất hữu ích. Ví dụ: nếu bạn có ngày ở định dạng YYYY-MM-DD [ISO 8601], chúng sẽ được sắp xếp theo thứ tự bảng chữ cái. Chúng cũng có thể được giải thích dễ dàng bằng nhiều ngôn ngữ lập trình và phần mềm. Việc lưu ngày trong các chuỗi có định dạng ISO 8601 sẽ giảm thời gian cần thiết để làm sạch dữ liệu và giúp diễn giải các ngày không rõ ràng như “04–11–07”
Bạn cũng có thể nhận được các đại diện theo nghĩa đen của ngày tháng
d1 = dt.date[2020, 11, 19]0
>>> d1datetime.date[2020, 11, 19]
Hai phương pháp trên đều là tiêu chuẩn. Nếu bạn muốn ngày ở định dạng hoàn toàn khác hoặc tùy chỉnh thì sao? .
>>> d1.year20207 lấy một chuỗi định dạng với các chữ cái mã đặc biệt để biểu thị các thành phần ngày tháng theo nhiều cách khác nhau. Dưới đây là những cái phổ biến nhất
- %Y. một năm trong 4 chữ số
- %y. một năm có 2 chữ số
- %m. tháng có 2 chữ số
- %B. tên đầy đủ của tháng
- %w. số tuần từ 0 đến 6
- %MỘT. tên đầy đủ của ngày trong tuần
- %d. Ngày trong tháng
- %j. ngày trong năm
Đây là một ví dụ
Bạn có thể chọn một văn bản tùy ý
Bài viết này chỉ nói về ngày và đại diện của họ. Đừng nhầm lẫn các đối tượng ngày với các đối tượng thời gian. Hy vọng rằng, tôi cũng sẽ đề cập đến cách làm việc với chúng trong các bài viết sau. Giữ nguyên