Giới thiệu phương thức strptime()

Tuan Tran

Nếu như bạn đã đọc bài viết "Giới thiệu phương thức strftime()", thì chắc hẳn bạn sẽ muốn biết thêm một người anh em của phương thức strftime() đấy. Nó chính là strptime(). Vậy phương thức strptime() này khác nhau với người anh em của nó như thế nào? Hãy cùng tôi tìm hiểu nhé :D

Là tôi đây, Tuấn Bond (aka Tuan Tran). Chắc hẳn đọc tiêu đề bạn hơi lưỡng lự phải không? Có lẽ bạn sẽ tự hỏi "Ơ, tôi có nhìn nhầm không? Tôi đã đọc bài này rồi mà!" :D Vâng, đừng ngạc nhiên, bạn nhìn nhầm thật đấy, vì phương thức hôm nay tôi muốn hướng dẫn cho các bạn chính là strptime() và nó khác hoàn toàn (nói trắng ra là nó trái ngược 100%) với người anh em của nó phương thức strftime() đấy ;)

Ơ, thế strptime() là cái gì???

Nào, chúng ta hãy nhìn hình sau đây nhé

Bạn hãy xem hình này một cách kỹ nhất có thể nhé, tôi dám cá là bạn sẽ hiểu nhanh thôi :D

Để tôi tóm tắt lại cho bạn nhé:

  • strptime() mục đích là chuyển đổi một chuỗi ký tự chứa giá trị thời gian (ngày, tháng, năm...) thành một đối tượng datetime

  • strptime() chỉ hỗ trợ đối tượng datetime thôi bạn nhé. Lưu ý nè :3

  • strptime() sẽ nhận 2 tham số:

    • Tham số đầu tiên: chuỗi ký tự chứa giá trị thời gian mà cần chuyển thành đối tượng datetime

    • Tham số thứ hai: chuỗi ký tự chứa các format code

Lưu ý với bạn lần nữa: tham số thứ hai thể hiện định dạng của giá trị truyền vào cho tham số thứ nhất, không thôi sẽ xảy ra lỗi như dưới đây

>>> from datetime import datetime
>>> str_datetime_02 = "2019-09-04"
>>> datetime.strptime(str_datetime_02, "%Y-%m-%d")
datetime.datetime(2019, 9, 4, 0, 0)
>>> >>> datetime.strptime(str_datetime_02, "%Y-%m-%d %H:%M:%S") Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime (data_string, format)) ValueError: time data '2019-09-04' does not match format '%Y-%m-%d %H:%M:%S'

Ở đoạn code datetime.strptime(str_datetime_02, "%Y-%m-%d %H:%M:%S") xảy ra lỗi, vì định dạng của tham số thứ nhất (chuỗi thời gian) và tham số thứ hai (format code) không giống nhau. Bạn lưu ý nhé!

Về format code, bạn có thể xem lại bài viết "Giới thiệu phương thức strftime()" hoặc có thể vào link số [1] để tìm hiểu thêm nhé :D

Tổng kết

Nào, bạn cảm thấy thế nào? Đỡ bối rối hơn rồi chứ, đừng nhầm lẫn tên của hai phương thức strftime()strptime() nhé. Tuy trái ngược nhau về chức năng, nhưng cả hai bọn này ăn ý hơp tác lắm đấy, bạn cố gắng nắm vững hai phương thức này nhé. Nếu có thắc mắc bạn cứ thoải mái vào Forum đặt câu hỏi nhé. Tôi sẽ trả lời cho bạn :3

p/s: Bài viết lần sau sẽ gay cấn lắm, bạn nhớ theo dõi tiếp nhé.

Tài liệu tham khảo