Như S1R đã chỉ ra, phương pháp strptime
là những gì bạn muốn. Bạn cũng cần chỉ định năm, vì nó không được bao gồm trong chuỗi ngày của bạn:
>>> import datetime
>>> s = "Apr 18 17:19:42"
>>> t = datetime.datetime.strptime[s, "%b %d %H:%M:%S"]
>>> t
datetime.datetime[1900, 4, 18, 17, 19, 42]
>>> t = t.replace[year = 2012]
>>> n = datetime.datetime.now[]
>>> n
datetime.datetime[2012, 4, 20, 10, 21, 42, 165657]
>>> d = n-t
>>> d.total_seconds[]
Python không có date
là loại dữ liệu tích hợp. Tuy nhiên, mô -đun
dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
0 trong thư viện tiêu chuẩn xác định các lớp date
, dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
2 và dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
0 bằng cách sử dụng xử lý ngày và thời gian có thể được thực hiện. Đối tượng của các lớp này được tạo bằng cách cung cấp các đối số số nguyên như sau:dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
Do đó, chúng ta sẽ có thể phân tích biểu diễn chuỗi của ngày/thời gian và có được các đối số cho các hàm tạo trên. Ví dụ: biểu diễn chuỗi mặc định của ngày là
dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
4, về thời gian dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
5 và dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
6 dành cho DateTime.Ví dụ,
dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
7 là một chuỗi đại diện cho ngày và thời gian. Chúng ta có thể tách các thuộc tính ngày và thời gian theo cách thủ công và xây dựng đối tượng dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
0 như sau:>>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
Trong chuỗi DateTime trên, 10 ký tự đầu tiên có các giá trị một năm, tháng và ngày được phân tách bởi '-' và 8 ký tự còn lại có các giá trị, phút và giây được phân tách bằng ':'. Bây giờ bạn có thể giải nén bộ tuple trên cho hàm tạo DateTime bằng cách nhập mô -đun DateTime, như được hiển thị bên dưới.
>>> import datetime
>>> datetimeobj=datetime.datetime[*dt_tuple]
>>> datetimeobj
datetime.datetime[2020, 10, 16, 12, 35, 20]
Tuy nhiên, biểu diễn chuỗi của ngày và thời gian có thể thay đổi theo lựa chọn của người dùng. Ví dụ: người ta có thể sử dụng định dạng
dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
9 hoặc ai đó có thể muốn hiển thị tháng từng tên, chẳng hạn như >>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
0.Đây là nơi phương pháp
>>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
1 của lớp dateobj = date[year, month, day]
timeobj = time[hour, minute, second]
datetimeobj = datetime[year, month, day, hour, minute, second]
0 chứng tỏ hữu ích.datetime.datetime.strptime[string, format]
Tham số đầu tiên là biểu diễn chuỗi và thứ hai sử dụng mã được xác định trước để phân tích các giá trị ngày và thời gian từ một chuỗi. Ví dụ: chuỗi ngày
>>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
3 được phân tích cú pháp bởi hàm này nếu định dạng được đưa ra là >>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
4. Ở đây, >>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
5 sử dụng bốn ký tự đầu tiên làm đại diện bốn chữ số của một năm, hai ký tự giữa một tháng và hai ký tự cuối cùng cho một ngày. Mô -đun xác định các mã duy nhất sau đây để định dạng chuỗi DateTime theo nghĩa được xác định trước của chúng.
%một | Ngày trong tuần, phiên bản ngắn |
%MỘT | Ngày trong tuần, phiên bản đầy đủ |
%d | Ngày của tháng 01-31 |
%b | Tên tháng, phiên bản ngắn |
%B | Tên tháng, phiên bản đầy đủ |
%m | Tháng là số 01-12 |
%y | Năm, phiên bản ngắn, không có thế kỷ |
%Y | Năm, phiên bản đầy đủ |
%H | Giờ 00-23 |
%TÔI | Giờ 00-12 |
%P | AM/PM |
%M | Phút 00-59 |
%S | 00-59 thứ hai |
Chúng ta hãy sử dụng phương thức
>>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
1 để chuyển đổi một chuỗi đã cho thành đối tượng DateTime, như được hiển thị bên dưới:>>> strdate="2020-10-16 12:35:20"
>>> datetimeobj=datetime.datetime.strptime[strdate, "%Y-%m-%d %H:%M:%S"]
>>> datetimeobj
datetime.datetime[2020, 10, 16, 12, 35, 20]
Nếu chuỗi ngày được thay đổi thành
>>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
7, định dạng phải được đặt thành >>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
8.>>> strdate="16-10-2020 12:35:20"
>>> datetimeobj=datetime.datetime.strptime[strdate,"%d-%m-%Y %H:%M:%S"]
>>> datetimeobj
datetime.datetime[2020, 10, 16, 12, 35, 20]
Như một ví dụ cuối cùng, chúng ta hãy đặt chuỗi ngày là
>>> strdate="2020-10-16 12:35:20"
>>> dt_tuple=tuple[[int[x] for x in strdate[:10].split['-']]]+tuple[[int[x] for x in strdate[11:].split[':']]]
>>> dt_tuple
[2020, 10, 16, 12, 35, 20]
9>>> strdate="16-Oct-20"
>>> datetimeobj=datetime.datetime.strptime[strdate,"%d-%b-%y"]
>>> datetimeobj
datetime.datetime[2020, 10, 16, 0, 0]
Lưu ý rằng các tham số thời gian xuất hiện là 0 vì chúng không được bao gồm trong chuỗi.