CÔNG CỤ
MODULES
THAM KHẢO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Chuyển chuỗi Python thành DateTime trong Python

Trong bài viết này, mình sẽ tìm hiểu cách chuyển đổi một chuỗi thành đối tượng ngày giờ trong Python bằng cách sử dụng hàm strptime() cùng với các mã định dạng ngày thường được sử dụng. Bên cạnh đó, mình cũng sẽ khám phá cách sử dụng các phương thức tương tự từ các mô-đun khác để thực hiện việc chuyển đổi này.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Các bước để chuyển đổi chuỗi thành datetime trong Python

Trong một số trường hợp, ngày và giờ có thể được chuyển thành đối tượng chuỗi. Để chuyển đổi một chuỗi thành một datetime đối tượng, mình có thể sử dụng strptime() chức năng của mô-đun datetime.

Ví dụ: bạn có thể cần chuyển đổi một chuỗi số như 17-06-2022 thành một datetime đối tượng,hoặc bạn muốn chuyển đổi chuỗi đại diện cho các ngày như Thứ Hai, ngày 17 tháng 6 năm 2021 thành một datetime đối tượng.

Các bước dưới đây cho thấy cách chuyển đổi một chuỗi biểu thị ngày thành đối tượng ngày giờ.

Bài viết này được đăng tại [free tuts .net]

Bước 1: Nhập mô-đun ngày giờ.

Trước hết, bạn cần phải nhập mô-đun datetime để có thể sử dụng các lớp và hàm liên quan đến thời gian và ngày giờ.

from datetime import datetime

Bước 2: Sử dụng hàm strptime() của lớp datetime.

Hàm strptime() cho phép bạn phân tích một chuỗi theo định dạng cho trước và tạo ra một đối tượng datetime từ chuỗi đó. Định dạng được sử dụng để chỉ ra cách chuỗi được biểu diễn theo ngày giờ.

date_string = "2023-08-16 15:30:00"
date_format = "%Y-%m-%d %H:%M:%S"
converted_datetime = datetime.strptime(date_string, date_format)
print(converted_datetime)

Trong ví dụ trên, date_string là chuỗi bạn muốn chuyển đổi và date_format là định dạng của chuỗi đó. Trong trường hợp này, chuỗi có định dạng 'YYYY-MM-DD HH:MM:SS', tương ứng với năm, tháng, ngày, giờ, phút và giây.

Bước 3: Sử dụng hàm strptime() của mô-đun thời gian.

Ngoài việc sử dụng strptime() từ lớp datetime, bạn cũng có thể sử dụng strptime() từ mô-đun time. Tuy nhiên, trong trường hợp này, bạn sẽ nhận được một đối tượng struct_time.

import time

date_string = "2023-08-16 15:30:00"
date_format = "%Y-%m-%d %H:%M:%S"
converted_struct_time = time.strptime(date_string, date_format)
print(converted_struct_time)

Trong ví dụ này, converted_struct_time sẽ là một đối tượng struct_time chứa thông tin về năm, tháng, ngày, giờ, phút, giây và các thành phần khác của thời gian.

anh12 jpg

Ví dụ: Phân tích chuỗi thành ngày giờ

Cú pháp :

datetime.strptime(date_string, format)

Sau đây là ví dụ trong đó chúng tôi có một chuỗi biểu thị ngày và giờ ở định dạng chuẩn ( dd/mm/yyyy hh:mm:ss).

from datetime import datetime

# Date String in dd/mm/yyyy HH:MM:SS format
dt_string = "12/06/2021 09:15:32"

# Convert string to datetime object
dt_object = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print(dt_object)

# Output 2021-06-12 09:15:32

Đối tượng chuỗi đến ngày

Để làm điều này, bạn có thể sử dụng lớp datetime từ mô-đun datetime như sau:

from datetime import datetime

# Chuỗi ngày cần chuyển đổi
date_string = "2023-08-16"

# Định dạng của chuỗi ngày
date_format = "%Y-%m-%d"

# Sử dụng datetime.strptime() để chuyển đổi chuỗi thành đối tượng datetime
date_object = datetime.strptime(date_string, date_format).date()

# In ra đối tượng ngày đã tạo
print("Đối tượng ngày:", date_object)

Trong ví dụ này:

  • datetime.strptime() được sử dụng để chuyển đổi chuỗi thành đối tượng datetime.
  • .date() được sử dụng để lấy phần ngày của đối tượng datetime, tạo thành một đối tượng ngày riêng lẻ.

Lưu ý rằng phần giờ, phút và giây sẽ được đặt về giá trị mặc định (00:00:00) khi bạn lấy phần ngày từ đối tượng datetime.

Chuỗi thành time đối tượng

Bạn có thể sử dụng datetime.time lớp để chuyển đổi một chuỗi chứa thời gian thành một timeđối tượng.

  • Đầu tiên, chuyển đổi một chuỗi thành một datetime đối tượng
  • Sử dụng datetime.time() chức năng để chỉ trích xuất timeđối tượng từ phiên bản datetime.
from datetime import datetime

# Convert string to datetime.time object
time_obj = datetime.strptime("12/06/2023 09:15:32", "%d/%m/%Y %H:%M:%S").time()
print(time_obj)

# Output 09:15:32

Lưu ý : Nếu một chuỗi đại diện cho thời gian không có ngày, chỉ sử dụng %H/%M/%S mã định dạng.

t_object = datetime.strptime("11:45:23", "%H:%M:%S").time()

Chuỗi thành time đối tượng bằng Mô-đun thời gian

Mình có thể sử dụng phương thức () của mô-đun thời gian strptime để chuyển đổi thời gian ở định dạng chuỗi thành đối tượng thời gian ở time.struct_time định dạng.

Cú pháp :

time.strptime(string[, format])

Mình hãy xem một ví dụ trong đó ta có một chuỗi đề cập đến thời gian ở định dạng giờ-phút-giây (hh:mm:ss).

Ví dụ :

import time

# time hours-minutes-seconds format
time_string = "09-15-09"
format_codes = "%H-%M-%S"

time_obj = time.strptime(time_string, format_codes)
print("Time Object", time_obj)
print(type(time_obj))

Làm thế nào strptime() hoạt động?

strptime() là một phương thức của lớp datetime trong Python, và nó được sử dụng để phân tích (parse) một chuỗi đại diện cho thời gian thành một đối tượng datetime. Tên của phương thức có ý nghĩa như sau:

  • "str" là viết tắt của "string" (chuỗi), là loại dữ liệu đầu vào bạn muốn phân tích.
  • "ptime" đại diện cho "parsed time" (thời gian đã được phân tích).

Cú pháp của phương thức strptime() như sau:

datetime.strptime(date_string, format)

Trong đó:

  • date_string là chuỗi bạn muốn chuyển đổi thành đối tượng datetime.
  • format là định dạng của chuỗi, chỉ định cách mà chuỗi được biểu diễn theo ngày giờ.

Ví dụ, nếu bạn có một chuỗi "2023-08-16 15:30:00" và muốn chuyển nó thành một đối tượng datetime, bạn có thể làm như sau:

from datetime import datetime

date_string = "2023-08-16 15:30:00"
date_format = "%Y-%m-%d %H:%M:%S"
converted_datetime = datetime.strptime(date_string, date_format)
print(converted_datetime)

Ở đây, "%Y-%m-%d %H:%M:%S" là định dạng của chuỗi "2023-08-16 15:30:00", trong đó %Y đại diện cho năm, %m đại diện cho tháng, %d đại diện cho ngày, %H đại diện cho giờ (24h), %M đại diện cho phút và %S đại diện cho giây.

Khi bạn gọi datetime.strptime(date_string, date_format), phương thức sẽ phân tích chuỗi date_string theo định dạng date_format và tạo ra một đối tượng datetime tương ứng.

strptime() mã định dạng

Khi bạn sử dụng phương thức strptime() để chuyển đổi một chuỗi thành một đối tượng datetime, bạn cần xác định mã định dạng (format codes) để chỉ ra cách mà các phần của chuỗi biểu diễn ngày giờ. Dưới đây là một số mã định dạng phổ biến mà bạn có thể sử dụng trong strptime():

Mã định dạng Sự miêu tả Ví dụ
%d Ngày trong tháng dưới dạng số thập phân không đệm. CN, Mon, …, Sat (en_US);
Vì vậy, Mo, …, Sa (de_DE)
%m Tháng trong năm dưới dạng số thập phân không đệm. Chủ Nhật, Thứ Hai, …, Thứ Bảy (en_US);
Sonntag, Montag, …, Samstag (de_DE)
%Y Một năm với một thế kỷ ở định dạng bốn chữ số 0001, 2021, … , 9999
%y Một năm không có thế kỷ ở định dạng hai chữ số 01, 21, …, 31
%A Tên đầy đủ của một ngày trong tuần theo tên của ngôn ngữ. Chủ Nhật, …, Thứ Bảy (en_US);
Sonntag, …, Samstag (de_DE)
%a Tên viết tắt của một ngày trong tuần làm tên viết tắt của ngôn ngữ. CN, …, Sat (en_US);
Vì vậy, …, Sa (de_DE)
%B Tên đầy đủ của một tháng theo tên của miền địa phương Tháng Giêng, …, Tháng Mười Hai (en_US);
tháng một, …, tháng mười hai (de_DE)
%b Tên viết tắt của một tháng là tên viết tắt của ngôn ngữ. Tháng 1, …, Tháng 12 (en_US);
Tháng Giêng, …, Dez (de_DE)
%H Giờ (đồng hồ 24 giờ) dưới dạng số thập phân không đệm. 01, 02, … , 23
%I Giờ (đồng hồ 12 giờ) dưới dạng số thập phân không đệm. 01, 02, …, 12
%p Ngôn ngữ tương đương với AM hoặc PM. AM, PM (en_US);
sáng, chiều (de_DE)
%M Phút dưới dạng số thập phân không đệm. 00, 01, …, 59
%S Thứ hai dưới dạng số thập phân không đệm. 00, 01, …, 59
%f Micro giây dưới dạng số thập phân, không đệm ở bên trái. 000000, 000001, …, 999999
%z UTC offset ở dạng ±HHMM[SS[.ffffff]] (chuỗi trống nếu đối tượng là ngây thơ). (trống), +0000, -0400, +1030, +063415, -030712.345216
%Z Tên múi giờ (chuỗi trống nếu đối tượng là ngây thơ). (trống), UTC, GMT
%j Ngày trong năm dưới dạng số thập phân không đệm. 001, 002, …, 366
%U Số tuần của năm (Chủ nhật là ngày đầu tiên của tuần) dưới dạng số thập phân không đệm. 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 của năm (thứ hai là ngày đầu tuần) dưới dạng số thập phâ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 Đại diện ngày và giờ thích hợp của địa phương. Thứ ba ngày 16 tháng 8 21:30:00 1988 (en_US);
Ngày 16 tháng 8, 21:30:00, 1988 (de_DE)
%x Đại diện ngày thích hợp của địa phương. 16/08/88 (Không có);
16/08/1988 (en_US);
16.08.1988 (de_DE)
%X Đại diện thời gian thích hợp của địa phương. 21:30:00 (vi_Mỹ);
21:30:00 (de_DE)
%% Một '%' nhân vật theo nghĩa đen. %

Kết bài

Qua bài viết trên, chuyển chuỗi thành đối tượng DateTime là một phần quan trọng khi làm việc với thời gian. Thư viện datetime cung cấp phương thức strptime() cho phép ta dễ dàng biến đổi chuỗi thời gian thành DateTime. Bằng cách xác định định dạng và sử dụng phương thức này, chúng ta có thể tạo ra đối tượng DateTime từ chuỗi dễ dàng và linh hoạt.Chúc bạn thành công.

Cùng chuyên mục:

Lớp Metaclass trong Python

Lớp Metaclass trong Python

Tìm hiểu về Class Type trong Python

Tìm hiểu về Class Type trong Python

Phương thức __new__ trong Python

Phương thức __new__ trong Python

Phân biệt Data Descriptor và Non-data Descriptor trong Python

Phân biệt Data Descriptor và Non-data Descriptor trong Python

Mô tả Descriptors trong Python

Mô tả Descriptors trong Python

Tìm hiểu về các lớp mixin trong Python

Tìm hiểu về các lớp mixin trong Python

Đa kế thừa trong Python

Đa kế thừa trong Python

Nguyên tắc đảo ngược sự phụ thuộc trong Python

Nguyên tắc đảo ngược sự phụ thuộc trong Python

Interface Segregation Principle - ISP trong Python.

Interface Segregation Principle - ISP trong Python.

Nguyên tắc thay thế Liskov - LSP trong Python

Nguyên tắc thay thế Liskov - LSP trong Python

Nguyên tắc Đóng-Mở trong Python

Nguyên tắc Đóng-Mở trong Python

Single Responsibility Principle trong Python

Single Responsibility Principle trong Python

Cách sử dụng hàm Auto() của Python

Cách sử dụng hàm Auto() của Python

Tùy chỉnh và mở rộng lớp Enum trong Python

Tùy chỉnh và mở rộng lớp Enum trong Python

Sử dụng Enum aliases và @enum.unique trong Python

Sử dụng Enum aliases và @enum.unique trong Python

Cách sử dụng Protocol trong Python

Cách sử dụng Protocol trong Python

Sử dụng __slots__ trong Python

Sử dụng __slots__ trong Python

Sử dụng super() trong Python

Sử dụng super() trong Python

Thuộc tính Delete trong Python

Thuộc tính Delete trong Python

Thuộc tính chỉ đọc trong Python

Thuộc tính chỉ đọc trong Python

Top