Tính toán ngày giờ python
Gần đây mình đang làm nhiều việc với kiểu dữ liệu Datetime trong Python. Vấn đề mình gặp phải là xử lý nhiều loại định dạng thời gian khác nhau, chuyển hóa thành định dạng Ngày giờ, chuẩn hóa thời gian lưu trữ và lưu vào cơ sở dữ liệu. Và sau đây, mình sẽ viết bài chia sẻ về cách mình xử lý kiểu dữ liệu Datetime trong Python. Trong bài mình sẽ sử dụng Python 3 để xử lý kiểu dữ liệu Datetime Mẹo 1. Khoảng thời gian sử dụng chuẩn hóaĐầu tiên, cũng là quan trọng nhất, tiêu chuẩn hóa múi giờ sử dụng để chuyển đổi các kiểu thời gian. Mình lựa chọn sử dụng múi giờ chuẩn UTC để chuẩn hóa thời gian cho cả hệ thống cũng như làm múi giờ chuẩn để xử lý các loại định dạng thời gian khác nhau Tham khảo thêm về thời gian UTC tại Xử lý bằng hàm
Xử lý bằng strptime
Lưu ý
Dấu thời gian là kiểu thời gian thông tin ứng dụng của hệ thống thông tin Unix, tìm hiểu thêm tại
Kiểm tra loại múi giờ
Lưu ý. không sử dụng hàm thay thế, hàm thay thế sẽ chỉ thay đổi tzinfo không quy định thời gian từ múi giờ này sang múi giờ khác Nếu bạn đang ở múi giờ Việt Nam (GMT+7), tức nếu hiện tại là 8 giờ sáng (giờ Việt Nam) thì quy ra giờ UTC tức 1 giờ sáng (giờ UTC). Vì vậy nếu Datetime đang ở múi giờ UTC thì ta phải convert nó sáng giờ Việt Nam
ISO 8601 là một tiêu chuẩn quốc tế, được đưa ra bởi Tổ chức tiêu chuẩn hóa quốc tế (ISO) lần đầu tiên vào năm 1988, mô tả quy cách viết ngày tháng và thời gian theo cách đơn giản nhất mà máy tính có thể hiểu được. . Còn đối với Python ISO 8601 Datetime is string format time information information Giải pháp này hoạt động chính xác cho tháng 12, điều mà hầu hết các câu trả lời trên trang này không. Trước tiên, bạn cần chuyển các tháng từ chỉ mục dựa trên 1 (tức là tháng 1 = 1) sang chỉ mục dựa trên 0 (tức là tháng 1 = 0) trước khi sử dụng mô đun ( % ) hoặc phép chia số nguyên ( // ), nếu không thì tháng 11 (11) (Và không đề xuất "(tháng% 12) + 1" hoặc tháng 10 + 1 = tháng 12. )
Tuy nhiên. Điều này không tính đến sự cố như ngày 31 tháng 1 + một tháng. Vì vậy, chúng tôi quay trở lại OP - ý bạn là gì khi thêm một tháng? . Điều này cũng sẽ hoạt động trên số âm của tháng. Bằng chứng Trong Python, các lớp date, time và datetime cung cấp các hàm xử lý ngày, thời gian và khoảng thời gian. Ngày và giờ là các đối tượng trong Python, vì vậy khi bạn thao tác với chúng, thực tế là bạn đang thao tác với các đối tượng chứ không phải chuỗi hoặc thời gian. Bất kể khi nào bạn cần thao tác với ngày hoặc thời gian, bạn cần nạp hàm datetime Các lớp datetime trong Python được phân thành 5 nhóm chính
Trong bài này, chúng ta sẽ tìm hiểu về
Cách sử dụng Lớp Date và DateTime Bước 1) Trước khi chạy mã nguồn với ngày giờ, điều quan trọng cần làm là tải mô-đun ngày và giờ như hình dưới đây Các câu lệnh nạp (nhập) trên sẽ cung cấp các hàm được định nghĩa sẵn trong thư viện Python, qua đó bạn có thể thao tác với ngày tháng và thời gian mà không cần viết thêm mã nguồn Trước khi thực hiện source code với datetime, hãy xem dòng lệnh dưới đây ________số 8_______Câu lệnh này thông báo cho trình thông dịch Python rằng hãy tải lớp ngày từ mô-đun datetime. Chúng ta sẽ không cần viết thêm mã nguồn cho chức năng ngày tháng mà chỉ cần tải chúng trước khi sử dụng Bước 2) Tiếp theo chúng ta sẽ tạo ra một thực thể cho đối tượng này Bước 3) Tiếp theo, chúng ta sẽ vào ngày tháng và chạy đoạn mã Đầu ra thu đúng như mong đợi In by date. hôm nay() Hàm ngày. hôm nay có một số đặc điểm đi kèm. Chúng ta có thể vào ngày / tháng / năm riêng lẻ và rất nhiều thứ khác Các ví dụ sau Số ngày trong tuần của hôm nay Hàm ngày. today() cũng cung cấp cho bạn số ngày trong tuần (ngày thứ mấy trong tuần). Dưới đây là bảng Ngày trong tuần, nó bắt đầu từ thứ hai là số 0 đến chủ nhật là số 6 Ngày Số ngày trong tuần thứ hai 0 Thứ ba 1 Thứ tư 2 Thứ năm 3 Thứ sáu 4 thứ bảy 5 Sunday 6 Số ngày trong tuần rất hữu dụng cho các mảng sử dụng chỉ số phụ thuộc vào các ngày trong tuần Ngày và giờ hiện tại của Python. hiện nay() Bước 1) Giống như đối tượng Date, chúng ta cũng có thể sử dụng “đối tượng Datetime” trong Python. Nó đưa ra cùng ngày với thời gian tính bằng giờ, phút, giây và mili giây Khi chúng ta thực hiện mã nguồn với ngày giờ, nó sẽ ra ngày và giờ hiện tại Bước 2) Với “đối tượng Datetime”, bạn cũng có thể gọi đến lớp thời gian Giả sử chúng ta chỉ muốn trong thời gian hiện tại mà không có ngày
Và kết quả thu được chỉ có thời gian. Running program Bạn có thể thấy chúng ta có cả ngày và giờ. At the next line, we only get out of the time value Bước 3) Chúng ta sẽ áp dụng chỉ số ngày trong tuần cho một danh sách các ngày trong tuần để tìm ra hôm nay là thứ mấy
Đây là đoạn mã hoàn chỉnh để lấy ngày và giờ hiện tại bằng cách sử dụng hàm bây giờ trong mô-đun datetime
Định dạng ngày và giờ cho đầu ra với strftime() Giờ chúng ta đã học được cách sử dụng các đối tượng ngày giờ và ngày tháng trong Python. Chúng ta sẽ tiến thêm một bước và tìm hiểu cách sử dụng định dạng hàm để định dạng thời gian và ngày Bước 1) Đầu tiên chúng ta sẽ tìm hiểu một cách đơn giản định dạng năm. Cùng xem ví dụ dưới đây
Bước 2) Bây giờ nếu bạn thay thế ("%Y") bằng chữ thường, nghĩa là ("%y”) và thực thi đoạn mã, đầu ra sẽ chỉ hiển thị (18) chứ không phải (2018). Thế kỷ của năm sẽ không được hiển thị như trong ảnh bên dưới Bước 3) Hàm Strf có thể khai báo riêng ngày, thứ, tháng và năm. Ngoài ra chỉ với sự thay đổi nhỏ trong mã điều khiển trong hàm strftime, bạn có thể định dạng lại kiểu văn bản hiển thị Bên trong hàm strftime nếu bạn thay thế (%a) bằng chữ A, nghĩa là (%A), đầu ra sẽ là "Friday" thay vì chỉ viết tắt "Fri" Bước 4) Với sự trợ giúp của chức năng "Strftime", chúng ta cũng có thể truy xuất thời gian, ngày hoặc cả hai của hệ thống
Bạn có thể xem chương trình trong kết quả đúng như mong muốn Bước 5) "Ham strftime" cho phép bạn trả về thời gian dưới định dạng 24 giờ hoặc 12 giờ Chỉ bằng cách xác định mã điều khiển như %I/H cho giờ, %M cho phút, %S cho giây, ta có thể trả về thời gian dưới các định dạng khác nhau Định dạng 12h được khai báo như sau. [ in ngay. strftime("%I. %M. %S %P) ] Định dạng 24h được khai báo như sau. [ in ngay. strftime("%H. %M")] Đây là mã hoàn chỉnh để chuyển đổi ngày giờ thành đối tượng dạng chuỗi
Cách sử dụng Đối tượng Timedelta Với các đối tượng timedelta, bạn có thể ước tính thời gian cho tương lai và quá khứ. Nói cách khác, đó là một khoảng thời gian để dự đoán bất kỳ ngày, thứ hoặc thời gian nào Hãy nhớ rằng hàm này không phải để ra thời hạn hay ngày tháng, mà là để TÍNH TOÁN trong tương lai hoặc quá khứ. Cùng xem ví dụ sau để hiểu rõ hơn Bước 1) Để chạy đối tượng Timedelta, bạn cần khai báo lệnh tải trước đó
Bạn vẫn thấy thắc mắc? Bước 2) Cùng lấy ra ngày và giờ của ngày hôm nay để kiểm tra xem lệnh nạp có chạy đúng hay không. Khi đoạn mã được thực thi, nó sẽ xảy ra vào ngày hôm nay, điều đó có nghĩa là câu lệnh tải đã chạy đúng Bước 3) Chúng ta sẽ xem cách tìm ra ngày này 1 năm sau thông qua đối tượng timedelta. Khi chúng ta chạy đoạn mã này, kết quả sẽ trả về như mong muốn Bước 4) Một ví dụ khác về cách sử dụng timedelta để tính ngày trong tương lai từ ngày và giờ hiện tại Bước 5) Cùng xem một ví dụ phức tạp hơn. Chúng ta cùng nhau tìm xem Tết trôi qua được bao nhiêu ngày. Đây là cách làm
Chương trình trong ra "Ngày Tết đã trôi qua 11 ngày trước. " Đây là đoạn code hoàn chỉnh
Ví dụ sử dụng Python 2
Tổng kết Để thao tác với ngày và giờ theo cách đơn giản hoặc phức tạp, mô-đun datetime cung cấp các lớp hoặc danh mục khác nhau bao gồm |