Python Ngày Giờ, GiờDelta, Strftime(Format) với các ví dụ
Các lớp ngày giờ trong Python được chia thành 5 lớp chính.
- date – Chỉ thao tác ngày (Tháng, ngày, năm)
- time – Thời gian không phụ thuộc vào ngày (Giờ, phút, giây, micro giây)
- datetime - Kết hợp thời gian và ngày (Tháng, ngày, năm, giờ, giây, micro giây)
- timedelta— Khoảng thời gian được sử dụng để thao tác ngày tháng
- tzinfo— Một lớp trừu tượng để xử lý các múi giờ
Cách sử dụng lớp Date & DateTime
Bước 1) Trước khi bạn chạy mã cho định dạng ngày giờ trong Python, điều quan trọng là bạn phải nhập Python mô-đun ngày giờ như trong ảnh chụp màn hình bên dưới.
Các câu lệnh nhập này là các phần chức năng được xác định trước trong Python thư viện cho phép bạn thao tác ngày và giờ mà không cần viết bất kỳ mã nào.
Hãy xem xét những điểm sau đây trước khi thực hiện Python mã định dạng ngày giờ
from datetime import date
Dòng này cho biết Python trình thông dịch để nhập lớp ngày từ mô-đun datetime trong Python. Chúng tôi không viết mã cho chức năng ngày này mà chỉ nhập nó để sử dụng
Bước 2) Tiếp theo, chúng ta tạo một thể hiện của đối tượng date.
Bước 3) Tiếp theo, chúng ta in ngày tháng và chạy mã.
Đầu ra đúng như mong đợi.
In ngày bằng date.today()
date.today
Hàm có một số thuộc tính liên quan đến nó. Chúng ta có thể in ngày/tháng/năm riêng lẻ và nhiều thứ khác
Hãy xem một ví dụ
Số ngày trong tuần hôm nay
Hàm date.today() cũng cung cấp cho bạn số ngày trong tuần. Đây là Bảng ngày trong tuần bắt đầu bằng Monday là 0 và Chủ nhật là 6
ngày | TuầnSố ngày |
---|---|
Monday | 0 |
Thứ Ba | 1 |
Thứ Tư | 2 |
Thứ Năm | 3 |
Thứ Sáu | 4 |
Thứ Bảy | 5 |
Chủ Nhật | 6 |
Số ngày trong tuần rất hữu ích cho các mảng có chỉ mục phụ thuộc vào Ngày trong tuần.
Python Ngày và giờ hiện tại: now() hôm nay()
Bước 1) Giống như Đối tượng Ngày, chúng ta cũng có thể sử dụng “ĐỐI TƯỢNG NGÀY” in Python. Python các đối tượng ngày và giờ đưa ra ngày cùng với thời gian trong giờ, phút, giây và mili giây.
Khi chúng tôi thực thi mã cho datetime, nó sẽ đưa ra kết quả có 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 lớp thời gian.
Giả sử chúng ta chỉ muốn in thời gian hiện tại mà không có ngày.
t = datetime.time(datetime.now())
- Chúng tôi đã nhập lớp thời gian. Chúng ta sẽ gán cho nó giá trị thời gian hiện tại bằng cách sử dụng datetime.now()
- Chúng ta đang gán giá trị của thời gian hiện tại cho biến t.
Và điều này sẽ cho tôi thời gian. Vì vậy hãy chạy chương trình này.
Được rồi, bạn có thể thấy ở đây tôi đã ghi ngày và giờ. Và dòng tiếp theo, tôi đã có được thời gian cho riêng mình
Bước 3) Chúng ta sẽ áp dụng bộ chỉ mục ngày trong tuần cho arrayList của ngày trong tuần để biết hôm nay là ngày nào
- Toán tử ngày trong tuần (wd) được gán số từ số (0-6) tùy thuộc vào ngày trong tuần hiện tại. Ở đây chúng ta đã khai báo mảng danh sách theo ngày (Thứ Hai, Thứ Ba, Thứ Tư…Chủ Nhật).
- Sử dụng giá trị chỉ mục đó để biết đó là ngày nào. Trong trường hợp của chúng tôi, nó là số 2 và đại diện cho Thứ Tư, vì vậy, trong kết quả đầu ra, nó sẽ in ra “Đó là Thứ Tư”.
Đây là mã hoàn chỉnh để lấy ngày giờ hiện tại bằng cách sử dụng datetime now
from datetime import date from datetime import time from datetime import datetime def main(): ##DATETIME OBJECTS #Get today's date from datetime class today=datetime.now() #print (today) # Get the current time #t = datetime.time(datetime.now()) #print "The current time is", t #weekday returns 0 (monday) through 6 (sunday) wd=date.weekday(today) #Days start at 0 for monday days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print("Today is day number %d" % wd) print("which is a " + days[wd]) if __name__== "__main__": main()
Cách định dạng đầu ra ngày và giờ bằng strftime()
Đến bây giờ chúng ta đã học được cách sử dụng datetime và date đối tượng trong Python. Chúng ta sẽ tiến thêm một bước nữa và tìm hiểu cách sử dụng chức năng định dạng để định dạng Ngày và Giờ.
Bước 1) Đầu tiên chúng ta sẽ xem một bước đơn giản về cách định dạng năm. Nó là tốt hơn để hiểu với một ví dụ.
- Chúng tôi đã sử dụng “hàm strftime” để định dạng.
- Chức năng này sử dụng khác nhau mã điều khiển để đưa ra một đầu ra.
- Mỗi mã điều khiển giống với các tham số khác nhau như năm, tháng, ngày trong tuần và ngày [(%y/%Y – Năm), (%a/%A- ngày trong tuần), (%b/%B- tháng), (%d – ngày trong tháng)] .
- Trong trường hợp của chúng tôi, đó là (“%Y”) giống với năm, nó in ra cả năm cùng với thế kỷ (ví dụ: 2018).
Bước 2) Bây giờ nếu bạn thay thế (“%Y”) bằng chữ thường, tức là ( “%y) và thực thi mã thì đầu ra sẽ chỉ hiển thị (18) chứ không hiển thị (2018). Thế kỷ trong năm sẽ không hiển thị như trong ảnh chụp màn hình bên dưới
Bước 3) Hàm strf có thể khai báo ngày, ngày, tháng, năm riêng biệt. Ngoài ra với những thay đổi nhỏ trong mã điều khiển trong hàm strftime, bạn có thể định dạng kiểu văn bản.
Bên trong hàm strftime nếu bạn thay thế (%a) bằng chữ A viết hoa, tức là (%A), kết quả sẽ in ra là “Thứ Năm” thay vì chỉ viết tắt là “Thứ Sáu”.
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 ngày, giờ của hệ thống cục bộ hoặc cả hai.
- %C- cho biết ngày giờ địa phương
- %x- cho biết ngày địa phương
- %X- cho biết giờ địa phương
Ở đầu ra, bạn có thể thấy kết quả như mong đợi
Bước 5) “Chức năng strftime” cho phép bạn gọi thời gian ở bất kỳ định dạng nào là 24 giờ hoặc 12 giờ.
Chỉ cần xác định mã điều khiển như %I/H cho giờ, % M cho phút, %S cho giây, người ta có thể gọi thời gian cho các định dạng khác nhau
12 giờ thời gian được khai báo [print now.strftime(“%I:%M:%S %p) ]
24 giờ thời gian được khai báo [print now.strftime(“%H:%M”)]
Đây là mã hoàn chỉnh để chuyển đổi datetime thành đối tượng String.
# #Example file for formatting time and date output # from datetime import datetime def main(): #Times and dates can be formatted using a set of predefined string #Control codes now= datetime.now() #get the current date and time #%c - local date and time, %x-local's date, %X- local's time print(now.strftime("%c")) print(now.strftime("%x")) print(now.strftime("%X")) ##### Time Formatting #### #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM print(now.strftime("%H:%M")) # 24-Hour:Minute if __name__== "__main__": main()
Timedelta là gì trong Python?
Timedelta trong Python là một đối tượng biểu diễn khoảng thời gian. Nó chủ yếu được sử dụng để tính khoảng thời gian giữa hai ngày và giờ. Nó cũng được sử dụng để truy xuất đối tượng có một số ngày và giờ delta. Đối tượng timedelta hỗ trợ các phép toán như cộng, trừ, nhân, chia, v.v.
Cách sử dụng Timedelta Objects
Với Python Đối tượng timedelta cho phép bạn ước tính thời gian cho cả tương lai và quá khứ. Nói cách khác, đó là khoảng thời gian để dự đoán bất kỳ ngày, ngày hoặc giờ đặc biệt nào.
Hãy nhớ rằng chức năng này không phải để in ra ngày hay giờ mà là để TÍNH TOÁN về tương lai hoặc quá khứ. Chúng ta hãy xem một Python ví dụ về timedelta để hiểu rõ hơn.
Bước 1) Để chạy Timedelta Objects, trước tiên bạn cần khai báo câu lệnh import rồi thực thi mã
- Viết câu lệnh import cho timedelta
- Bây giờ hãy viết mã để in ra đối tượng theo thời gian delta như được hiển thị trong ảnh chụp màn hình
- Chạy mã. Timedelta biểu diễn khoảng thời gian 365 ngày, 8 giờ và 15 phút và in ra cùng một
Gây nhầm lẫn? Bước tiếp theo sẽ giúp-
Bước 2) Hãy lấy ngày giờ hôm nay để kiểm tra xem câu lệnh nhập của chúng ta có hoạt động tốt không. Khi mã được thực thi, nó sẽ in ra ngày hôm nay, điều đó có nghĩa là câu lệnh nhập của chúng tôi đang hoạt động tốt
Bước 3) Chúng ta sẽ xem cách chúng ta có thể lấy ngày một năm kể từ bây giờ thông qua các đối tượng delta. Khi chúng ta chạy mã, nó sẽ đưa ra kết quả như mong đợi.
Bước 4) Một ví dụ khác về cách sử dụng delta thời gian để tính ngày trong tương lai từ ngày và giờ hiện tại
Bước 5) Chúng ta hãy xem xét một ví dụ phức tạp hơn. Tôi muốn xác định còn bao nhiêu ngày nữa là đến năm mới. Sau đây là cách chúng ta sẽ tiến hành
- Sử dụng hôm nay= date.today() chúng ta sẽ có được ngày hôm nay
- Chúng tôi biết năm mới luôn diễn ra vào ngày 1 tháng 1,1, nhưng năm đó có thể khác. Sử dụng nyd= date(today.year,XNUMX) chúng ta lưu năm mới vào biến nyd
- nếu nyd < today: so sánh xem ngày hiện tại có lớn hơn năm mới không. Nếu có, nó sẽ vào vòng lặp while
- ((today-nyd).days) cho biết sự khác biệt giữa ngày hiện tại và năm mới tính bằng DAYS
Kết quả cho thấy “Ngày đầu năm mới đã trôi qua được 11 ngày”.
Đây là mã làm việc hoàn chỉnh
# # Example file for working with timedelta objects # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta # construct a basic timedelta and print it print (timedelta(days=365, hours=8, minutes=15)) # print today's date print ("today is: " + str(datetime.now())) # print today's date one year from now print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365))) # create a timedelta that uses more than one argument # print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))) # How many days until New Year's Day? today = date.today() # get todays date nyd = date(today.year, 1, 1) # get New Year Day for the same year # use date comparison to see if New Year Day has already gone for this year # if it has, use the replace() function to get the date for next year if nyd < today: print ("New Year day is already went by %d days ago" % ((today - nyd).days))
Python 2 Ví dụ
from datetime import date from datetime import time from datetime import datetime def main(): ##DATETIME OBJECTS #Get today's date from datetime class today=datetime.now() #print today # Get the current time #t = datetime.time(datetime.now()) #print "The current time is", t #weekday returns 0 (monday) through 6 (sunday) wd = date.weekday(today) #Days start at 0 for monday days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"] print "Today is day number %d" % wd print "which is a " + days[wd] if __name__== "__main__": main()
# #Example file for formatting time and date output # from datetime import datetime def main(): #Times and dates can be formatted using a set of predefined string #Control codes now= datetime.now() #get the current date and time #%c - local date and time, %x-local's date, %X- local's time print now.strftime("%c") print now.strftime("%x") print now.strftime("%X") ##### Time Formatting #### #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM print now.strftime("%H:%M") # 24-Hour:Minute if __name__== "__main__": main()
# # Example file for working with timedelta objects # from datetime import date from datetime import time from datetime import datetime from datetime import timedelta # construct a basic timedelta and print it print timedelta(days=365, hours=8, minutes=15) # print today's date print "today is: " + str(datetime.now()) # print today's date one year from now print "one year from now it will be:" + str(datetime.now() + timedelta(days=365)) # create a timedelta that uses more than one argument # print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)) # How many days until New Year's Day? today = date.today() # get todays date nyd = date(today.year, 1, 1) # get New Year Day for the same year # use date comparison to see if New Year Day has already gone for this year # if it has, use the replace() function to get the date for next year if nyd < today: print "New Year day is already went by %d days ago" % ((today - nyd).days)
Tổng kết
Để thao tác ngày tháng và thời gian theo cả cách đơn giản và phức tạp, mô-đun datetime cung cấp các lớp hoặc danh mục khác nhau như
- date – Chỉ thao tác ngày (Tháng, ngày, năm)
- time – Thời gian không phụ thuộc vào ngày (Giờ, phút, giây, micro giây)
- datetime - Kết hợp thời gian và ngày (Tháng, ngày, năm, giờ, giây, micro giây)
- timedelta— Khoảng thời gian được sử dụng để thao tác ngày tháng
- tzinfo— Một lớp trừu tượng để xử lý các múi giờ
Sử dụng các đối tượng ngày giờ
- Nhập đối tượng ngày giờ trước khi thực thi mã là bắt buộc
- Sử dụng hàm date.today để in từng ngày/tháng/năm cũng như lập chỉ mục ngày
- Sử dụng đối tượng date.time để lấy thời gian tính bằng giờ, phút, giây và mili giây
Định dạng hết thời gian với “hàm thời gian str f”
- Sử dụng “hàm thời gian str f” để thay đổi định dạng của năm
- In ngày, tháng, năm riêng biệt
- Thời gian gọi ra cho mọi định dạng 12 giờ hoặc 24 giờ
Đối tượng Timedelta
- Với các đối tượng timedelta, bạn có thể ước tính thời gian cho cả tương lai và quá khứ
- Tính tổng số ngày còn lại cho ngày đặc biệt (sinh nhật) tính từ thời điểm hiện tại
- Tính tổng số ngày đã qua cho ngày đặc biệt (sinh nhật) kể từ thời điểm hiện tại