Python strptime () - chuỗi thành đối tượng datetime

Trong bài viết này, bạn sẽ học cách tạo một đối tượng datetime từ một chuỗi (với sự trợ giúp của các ví dụ).

Các strptime()phương pháp tạo ra một đối tượng datetime từ chuỗi nhất định.

Lưu ý: Bạn không thể tạo datetimeđối tượng từ mọi chuỗi. Chuỗi cần phải ở một định dạng nhất định.

Ví dụ 1: chuỗi thành đối tượng datetime

  from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) print("type of date_string =", type(date_string)) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object) print("type of date_object =", type(date_object)) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 date_string = 21 Tháng Sáu, 2018 type of date_string = date_object = 2018-06-21 00:00:00 type of date_object = 

Strptime () hoạt động như thế nào?

Các strptime()phương thức lớp hai đối số:

  • chuỗi (được chuyển đổi thành datetime)
  • mã định dạng

Dựa trên chuỗi và mã định dạng được sử dụng, phương thức trả về datetimeđối tượng tương đương của nó .

Trong ví dụ trên:

Đây,

  • %d- Đại diện cho ngày trong tháng. Ví dụ: 01, 02,…, 31
  • %B- Tên tháng đầy đủ. Ví dụ: tháng Giêng, tháng Hai, v.v.
  • %Y- Năm có bốn chữ số. Ví dụ: 2018, 2019, v.v.

Ví dụ 2: chuỗi thành đối tượng datetime

  from datetime import datetime dt_string = "12/11/2018 09:15:32" # Considering date is in dd/mm/yyyy format dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S") print("dt_object1 =", dt_object1) # Considering date is in mm/dd/yyyy format dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S") print("dt_object2 =", dt_object2) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32 

Định dạng danh sách mã

Bảng bên dưới hiển thị tất cả các mã định dạng mà bạn có thể sử dụng.

Chỉ thị Ý nghĩa Thí dụ
%a Tên ngày trong tuần viết tắt. Sun mon,…
%A Tên đầy đủ các ngày trong tuần. Chủ nhật thứ hai,…
%w Ngày trong tuần dưới dạng số thập phân. 0, 1,…, 6
%d Ngày trong tháng dưới dạng số thập phân không có đệm. 01, 02,…, 31
%-d Ngày trong tháng dưới dạng số thập phân. 1, 2,…, 30
%b Tên tháng viết tắt. Tháng 1, Tháng 2,…, Tháng 12
%B Tên tháng đầy đủ. Tháng một tháng hai,…
%m Tháng dưới dạng số thập phân không có đệm. 01, 02,…, 12
%-m Tháng dưới dạng số thập phân. 1, 2,…, 12
%y Năm không có thế kỷ dưới dạng số thập phân không có đệm. 00, 01,…, 99
%-y Năm không có thế kỷ dưới dạng số thập phân. 0, 1,…, 99
%Y Năm với thế kỷ dưới dạng số thập phân. 2013, 2019, v.v.
%H Giờ (đồng hồ 24 giờ) dưới dạng số thập phân không có đệm. 00, 01,…, 23
%-H Giờ (đồng hồ 24 giờ) dưới dạng số thập phân. 0, 1,…, 23
%I Giờ (đồng hồ 12 giờ) dưới dạng số thập phân không có đệm. 01, 02,…, 12
%-I Giờ (đồng hồ 12 giờ) dưới dạng số thập phân. 1, 2,… 12
%p Ngôn ngữ là SA hoặc CH. SA, CH
%M Phút dưới dạng số thập phân không có đệm. 00, 01,…, 59
%-M Phút dưới dạng số thập phân. 0, 1,…, 59
%S Thứ hai dưới dạng số thập phân không có đệm. 00, 01,…, 59
%-S Thứ hai dưới dạng số thập phân. 0, 1,…, 59
%f Microsecond dưới dạng số thập phân, không được đệm ở bên trái. 000000 - 999999
%z UTC bù đắp ở 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 không có đệm. 001, 002,…, 366
%-j Ngày trong năm dưới dạng số thập phân. 1, 2,…, 366
%U Số tuần trong năm (Chủ nhật là ngày đầu tuần). Tất cả các ngày trong năm mới trước Chủ nhật đầu tiên được coi là trong tuần 0. 00, 01,…, 53
%W Số tuần trong năm (Thứ Hai là ngày đầu tiên trong tuần). Tất cả các ngày trong năm mới trước ngày thứ Hai đầu tiên được coi là trong tuần 0. 00, 01,…, 53
%c Biểu diễn ngày và giờ thích hợp của ngôn ngữ. Thứ Hai, ngày 30 tháng 9, 07:06:05 2013
%x Biểu diễn ngày thích hợp của ngôn ngữ. 30/09/13
%X Biểu diễn thời gian thích hợp của ngôn ngữ. 07:06:05
%% Một ký tự '%' theo nghĩa đen. %

ValueError trong strptime ()

Nếu chuỗi (đối số đầu tiên) và mã định dạng (đối số thứ hai) được chuyển đến strptime()không khớp, bạn sẽ nhận được ValueError. Ví dụ:

  from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object) 

Nếu bạn chạy chương trình này, bạn sẽ gặp lỗi.

 ValueError: dữ liệu thời gian '12/11/2018' không khớp với định dạng '% d% m% Y' 

Bài đọc được đề xuất: Python strftime ()

thú vị bài viết...