Thông tin liên hệ
- 036.686.3943
- admin@nguoicodonvn2008.info
Datetime Python là gì? Bài viết sẽ cung cấp cho bạn thông tin chi tiết về cách dùng hàm Datetime trong Python.
Trong Python, ngày và giờ không phải kiểu dữ liệu của riêng chúng, nhưng một mô đun tên DateTime có thể được nhập để hoạt động với ngày tháng và thời gian. Mô đun Datetime trong Python được tích hợp sẵn, vì thế, bạn không cần cài đặt nó từ bên ngoài.
Nếu đang gặp phải câu hỏi nhập vào một ngày ngày tháng năm tìm ngày kế sau ngày vừa nhập ngày tháng năm python, thì bài viết dưới đây sẽ cho bạn câu trả lời.
Mô đun Datetime trong Python cung cấp class để hoạt động với ngày tháng và thời gian. Những class này cung cấp một số hàm để xử lý với ngày tháng, thời gian và khoảng thời gian. Ngày tháng và datetime là một đối tượng trong Python, vì thế, khi bạn thao tác chúng, bạn thực sự thay đổi đối tượng, không phải chuỗi hay timestamp.
Mô đun Datetime chia thành 6 class chính:
Ví dụ 1: Trả về ngày giờ hiện tại
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Khi bạn chạy chương trình, output sẽ ở dạng:
2019-03-06 11:13:33.969330
Ở ví dụ này, ta vừa nhập module datetime bằng cách sử dụng câu lệnh import datetime.
Class datetime được khai báo trong module datetime, sau đó sử dụng lệnh now() để tạo một đối tượng datetime chứa ngày và giờ cục bộ hiện tại.
Ví dụ 2: Trả về ngày hiện tại
import datetime date_object = datetime.date.today() print(date_object)
Khi bạn chạy chương trình, output sẽ ở dạng:
2022-12-23
Trong chương trình này, ta sử dụng lệnh today() được khai báo trong class date để lấy về kết quả ngày cục bộ hiện tại.
Bạn có thể sử dụng hàm dir() để hiển thị danh sách tất cả các thuộc tính của module datetime.
import datetime print(dir(datetime))
Chạy chương trình, kết quả trả về là:
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time',
'timedelta', 'timezone', 'tzinfo']
Các lớp thường được sử dụng trong module datetime là:
Đối tượng của class date trả về kết quả thông tin ngày tháng (date), không bao gồm thông tin thời gian. Ngày tháng được truyền ở dạng ‘year, month, day’.
import datetime d = datetime.date(2022, 4, 12) print(d)
Khi bạn chạy chương trình, output sẽ ở dạng:
2022-04-12
Bạn cũng có thể cập nhật class date từ module datetime như này:
from datetime import date a = date(2022, 4, 12) print(a)
Ví dụ 3: Cập nhật ngày hiện tại
Sử dụng phương thức today()
from datetime import date today = date.today() print("Ngay hien tai la:", today)
Ví dụ 4: Gọi ngày từ timestamp
Thời gian Unix (Unix timestamp) là hệ thống nhằm diễn tả một điểm trên trục thời gian, theo trục thời gian nó sử dụng số giây để xác định thời điểm, với điểm gốc từ thời điểm 00:00:00 ngày 1/1/1970 theo giờ UTC.
Ví dụ lúc 00:00:00 - 12/02/2016 có giá trị timestamp là 1455235200; Có nghĩa là tính từ 00:00:00 - 1/1/1970 đến 00:00:00 - 12/02/2016 là 1455235200 giây.
Và ở trong Python, bạn có thể tạo đối tượng ngày từ một timestamp.
from datetime import date timestamp = date.fromtimestamp(1551916800) print("Date =", timestamp)
Khi bạn chạy chương trình, output sẽ ở dạng:
Date = 2019-03-07
Ví dụ 5: In ra ngày tháng năm hiện tại
from datetime import date # viết bởi Quantrimang.com today = date.today() print("Nam hien tai:", today.year) print("Thang hien tai:", today.month) print("Ngay hien tai:", today.day)
Khi bạn chạy chương trình, output sẽ ở dạng:
Nam hien tai: 2019
Thang hien tai: 3
Ngay hien tai: 7
Đối tượng của class time trả về kết quả thông tin thời gian (time) hiện tại, không bao gồm thông tin ngày tháng.
from datetime import time # time(hour = 0, minute = 0, second = 0) a = time() print("a =", a) # time(hour, minute and second) b = time(11, 34, 56) print("b =", b) # time(hour, minute and second) # viet boi Quantrimang.com c = time(hour = 11, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d =", d)
Kết quả trả về là:
a = 00:00:00
b = 11:34:56
c = 11:34:56
d = 11:34:56.234566
Ví dụ 6: In ra giờ, phút, giây và micro giây
from datetime import time a = time(11, 34, 56) print("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond =", a.microsecond)
Khi bạn chạy chương trình, output sẽ ở dạng:
hour = 11
minute = 34
second = 56
microsecond = 0
Ở ví dụ trên ta không truyền tham số cho micro giây nên giá trị trả về ở dạng mặc định là 0.
Đối tượng của class datetime trả về kết quả bao gồm thông tin của cả thời gian và ngày tháng.
from datetime import datetime #datetime được truyền ở dạng 'year, month, day'. a = datetime(2019, 3, 7) print(a) # datetime được truyền ở dạng 'year, month, day, hour, minute, second, microsecond' b = datetime(2019, 3, 7, 23, 55, 59, 342380) print(b)
Chạy chương trình ta được kết quả:
2019-03-07 00:00:00
2019-03-07 23:55:59.342380
3 tham số đầu tiên 'year, month, day' là bắt buộc.
Ví dụ 7: In ra năm, tháng, giờ, phút, timestamp
from datetime import datetime a = datetime(2019, 3, 7, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp =", a.timestamp())
Kết quả trả về là:
year = 2019
month = 3
hour = 23
minute = 55
timestamp = 1551977759.34238
Timedelta là một khoảng thời gian mô tả sự khác biệt giữa 2 mốc thời gian.
from datetime import datetime, date # khoảng thời gian chênh lệch giữa 2 ngày tháng t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 - t2 print("t3 =", t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 - t5 print("t6 =", t6)
Kết quả trả về là:
t3 = 201 days, 0:00:00
t6 = -333 days, 1:14:20
t3 và t6 ở đây đều là đối tượng timedelta
Ví dụ 8: Khoảng thời gian chênh lệch giữa 2 đối tượng timedelta
from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 =", t3)
Chạy chương trình, ta được output như sau:
t3 = 14 days, 13:55:39
Ví dụ 9: Xử lý timedelta mang giá trị âm
from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 =", abs(t3))
Kết quả thu được là:
t3 = -1 day, 23:59:39
t3 = 0:00:21
Ví dụ 10: Chuyển khoảng thời gian chênh lệch timedelta về dạng tổng số giây
Bạn có thể chuyển kết quả về dạng tổng số giây bằng phương thức Total_seconds().
from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("tong so giay =", t.total_seconds())
Ta được kết quả:
Tong so giay = 435633.233423
Các toán tử hỗ trợ timedelta:
Ngày tháng và thời gian được sử dụng ở những dạng khác nhau, Mỹ sử dụng định dạng mm/dd/yyyy, trong khi dd/mm/yyyy phổ biến hơn ở Anh.
Python có các phương thức strftime() và strptime() để xử lý việc này.
Ví dụ 11: Định dạng ngày tháng sử dụng strftime()
from datetime import datetime # ngày giờ hiện tại now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # định dạng mm/dd/YY H:M:S print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # định dạng dd/mm/YY H:M:S print("s2:", s2)
Chương trình trả về kết quả là:
time: 04:34:52
s1: 03/07/2019, 04:34:52
s2: 07/03/2019, 04:34:52
Ở đây %Y, %m, %d, %H... là các tham số định dạng. Phương thức strftime() sử dụng để trả về một chuỗi được định dạng dựa trên các tham số đó.
Phạm vi tham số:
Định dạng code
Định dạng code |
Ý nghĩa |
Ví dụ |
%a |
Viết tắt tên ngày trong tuần |
Sun, Mon |
%A |
Tên đầy đủ các ngày trong tuần |
Sunday, Monday |
%w |
Ngày trong tuần dưới dạng số thập phân |
0…6 |
%d |
Ngày trong tháng dưới dạng số thập phân không đệm |
01, 02 |
%-d |
Ngày trong tháng dưới dạng số thập phân |
1, 2.. |
%b |
Tên tháng được viết tắt |
Jan, Feb |
%m |
Tháng dưới dạng số thập phân có phần đệm là 0 |
01, 02 |
%-m |
Tháng dưới dạng số thập phân |
1, 2 |
%B |
Tên tháng đầy đủ |
January, February |
%y |
Năm không có thể kỷ được viết dưới dạng số thập phân có phần đệm là 0 |
99, 00 |
%-y |
Năm không có thế kỷ được viết dưới dạng số thập phân |
0, 99 |
%Y |
Năm có thế kỷ dưới dạng số thập phân |
2000, 1999 |
%H |
Viết giờ dưới dạng số thập phân bắt đầu bằng 0 |
01, 23 |
%-H |
Giờ dưới dạng số thập phân |
1, 23 |
%I |
Giờ dưới dạng số thập phân bắt đầu bằng 0 |
01, 12 |
%-I |
Giờ dưới dạng số thập phân |
1, 12 |
%p |
AM hoặc PM theo ngôn ngữ |
AM, PM |
%M |
Phút dưới dạng số thập phân bắt đầu bằng 0 |
01, 59 |
%-M |
Phút dưới dạng số thập phân |
1, 59 |
%S |
Giây dưới dạng số thập phân bắt đầu bằng 0 |
01, 59 |
%-S |
Giây dưới dạng số thập phân |
1, 59 |
%f |
micro giây dưới dạng số thập phân, số 0 được đệm ở bên trái |
000000, 999999 |
%z |
UTC offset ở dạng +HHMM hoặc -HHMM |
|
%Z |
Tên múi giờ |
|
%j |
Ngày trong năm dưới dạng số thập phân có phần đầu là 0 |
001, 365 |
%-j |
Ngày trong năm dưới dạng số thập phân |
1, 365 |
%U |
Số tuần trong năm (Ngày đầu tiên là Chủ Nhật) |
0, 6 |
%W |
Số tuần trong năm |
00, 53 |
%c |
Biểu thị ngày và giờ theo ngôn ngữ |
Mon Sep 30 07:06:05 2013 |
%x |
Biểu thị ngày tháng tương ứng theo ngôn ngữ |
11/30/98 |
%X |
Biểu thị thời gian phù hợp theo ngôn ngữ |
10:03:43 |
%% |
Ký tự theo nghĩa đen |
% |
from datetime import datetime date_string = "7 March, 2019" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object)
Khi bạn chạy chương trình, kết quả trả về là:
date_string = 7 March, 2019
date_object = 2019-03-07 00:00:00
Hàm datetime.now() không chứa thông tin nào liên quan đến múi giờ. Nó chỉ sử dụng thời gian hệ thống hiện tại. Tzinfo là một lớp cơ sở trừu tượng trong Python. Nó không thể được khởi tạo trực tiếp. Một lớp con cụ thể phải bắt nguồn từ lớp trừu tượng này và triển khai các phương thức do nó cung cấp.
Danh sách đối tượng DateTime.tzinfo() trong Python
Tên hàm |
Mô tả |
dst() |
Trả về tzinfo.dst() là tzinfo không phải là None |
fromutc() |
Mục đích của hàm này là điều chỉnh dữ liệu ngày giờ, trả về DateTime tương đương theo giờ địa phương của chính nó. |
tzname() |
Trả về tzinfo.tzname() là tzinfo không phải là None |
utcoffset() |
Trả về tzinfo.utcffsets() là tzinfo không phải là None |
Ví dụ:
import datetime as dt from dateutil import tz tz_string = dt.datetime.now(dt.timezone.utc).astimezone().tzname() print("datetime.now() :", tz_string) NYC = tz.gettz('Europe / Berlin') dt1 = dt.datetime(2022, 5, 21, 12, 0) dt2 = dt.datetime(2022, 12, 21, 12, 0, tzinfo=NYC) print("Naive Object :", dt1.tzname()) print("Aware Object :", dt2.tzname())
Kết quả:
datetime.now() : IST Naive Object : None Aware Object : None
Giả sử, bạn đang làm việc trên một dự án và cần hiển thị ngày giờ dựa trên múi giờ mình cần. Thay vì cố gắng tự search và tìm kiếm múi giờ, bạn nên sử dụng module pytZ như sau:
from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))
Chạy chương trình, kết quả trả về là:
Local time: 2019-03-07 13:10:44.260462
America/New_York time: 2019-03-07 13:10:44.260462
Europe/London time: 2019-03-07 13:10:44.260462
Ở ví dụ này, datetime_NY và datetime_London là các đối tượng datetime chứa ngày và giờ hiện tại của múi giờ tương ứng.
Nguồn tin: Quantrimang.com:
Ý kiến bạn đọc
Những tin mới hơn
Những tin cũ hơn