Hướng dẫn dùng dates python python

Python không có kiểu date-time, muốn sử dụng chúng ta phải import module datetime. Hôm nay chúng ta cùng tìm hiểu rõ hơn về date & time trong Python nhé.

Nội dung của bài

  • 1 Python date
  • 2 Khởi tạo một đối tượng datetime
  • 3 Phương thức strftime[]
  • 4 Kết luận

Python date

Hãy xem ví dụ dưới đây

import datetime

current_time = datetime.datetime.now[]
print[current_time]

Ví dụ trên để in ra ngày giờ hiện tại đầu tiên chúng ta phải import module datetime, sau đó sử dụng

datetime.datetime.now[] để lây ngày giờ hiện tại.
from datatime import datetime as dt
current_time = dt.now[]
print[current_time.year]
# prints 2021
print[current_time.strftime["%A"]]
# prints Sunday

Như ví dụ trên cùng, chúng ta sử dụng class datetime thuộc module datetime, ở ví dụ thứ 2 chúng ta import trực tiếp class datetime. Sau này trong quá trình làm việc, nếu bạn chỉ cần dùng một class trong module thì bạn nên dùng cách 2.

Khởi tạo một đối tượng datetime

import datetime
tdate = datetime.datetime[2021, 9, 19]
print[tdate]
# prints 2021-09-19 00:00:00

Ví dụ trên là cách khởi tạo một đối tượng datetime trong Python.

Phương thức strftime[]

import datetime
current_time = datetime.datetime.now[]
print[current_time.strftime["%a"]]
# prints Sun
print[current_time.strftime["%A"]]
# prints Sunday
print[current_time.strftime["%w"]]
# prints 0
print[current_time.strftime["%d"]]
# prints 19
print[current_time.strftime["%Y-%m-%d %H:%M:%S"]]
# prints 2021-09-19 17:41:08
DirectiveMô tảVí dụ%aSunday, dạng viết tắtSun%ASunday, dạng đầy đủSunday%wTrả về số thứ tự của ngày hiện tại giá trị từ 0-6, 0 là chủ nhật0%dTrả về ngày hiện tạ [giá trị từ 1-31]19%bTên tháng dạng viết tắtSep%BTên tháng dạng đầy đủSeptember%mTrả về tháng hiện tại dạng số.09%yTrả về năm hiện tại dạng rút gọn21%YTrả về năm hiện tại dạng đầy đủ2021%HGiờ từ 00-2317%IGiờ từ 00-1205%pAM/PMPM%MPhút 00-5941%SGiây 00-5908%fMicrosecond 000000-999999548513%zUTC offset+0100%ZTimezoneCST%jTrả về số ngày hiện tại theo năm [ 1 – 366 ]262%UTrả về số tuần của năm, 00-53, ngày đầu tuần là chủ nhật.38%WTrả về số tuần của năm, 00-53, ngày đầu tuần là thứ 2.37%cLocal version of date and timeSun Sep 19 11:31:13 2021

Kết luận

Datetime trong Python là không có sẵn, chúng ta phải sử dụng module datetime. Các bạn tìm hiểu kỹ cách sử dụng phương thức

Gần đây mình có làm việc nhiều với kiểu dữ liệu Datetime trong Python. Vấn đề mình gặp phải là xử lý nhiều loại time format khác nhau, chuyển hóa thành dạng Datetime, chuẩn hóa thời gian lưu trữ và lưu vào database. Và sau đây, mình sẽ viết bài chia sẻ về cách mình xử lý kiểu dữ liệu Datetime trong Python. Trong bài mình sẽ sử dụng Python 3 để xử lý kiểu dữ liệu Datetime.

Tips 1: Chuẩn hóa múi giờ sử dụng

Đầu tiên, cũng là quan trọng nhất, chuẩn hóa múi giờ sử dụng để convert các kiểu thời gian. Mình lựa chọn sử dụng chuẩn múi giờ UTC để chuẩn hóa thời gian cho cả hệ thống cũng như làm múi giờ chuẩn để xử lý các loại format thời gian khác nhau.

Tham khảo thêm về thời gian UTC tại

Xử lý bằng hàm parse

import datetime
import pytz
from dateutil.parser import parse

# Dạng string time
date_string = '2019-03-20T03:41:16Z'

# Dạng datetime format
date_time_python = parse[date_string]

Xử lý bằng strptime

import datetime
import pytz
from dateutil.parser import parse

# Dạng string time
date_string = '2019-03-21 03:41:16'

# Strptime
format = '%Y-%m-%d %H:%M:%S'
date_time_python = datetime.datetime.strptime[date_string, format]

Lưu ý:

  • Các rất nhiều format time khác nhau nên để có thể chuyển từ string thành Datetime parse chỉ có thể xử lý một số dạng tiêu chuẩn, nếu khác dạng tiêu chuẩn phải hiểu ra cấu trúc time string để sử dụng hàm strp để cắt chuỗi tạo Datetime
  • Nếu kiểu dữ liệu Datetime không rõ múi giờ thì được gọi là
    import datetime
    import pytz
    from dateutil.parser import parse
    
    # Dạng string time
    date_string = '2019-03-21 03:41:16'
    
    # Strptime
    format = '%Y-%m-%d %H:%M:%S'
    date_time_python = datetime.datetime.strptime[date_string, format]
    
    0

Timestamp là kiểu thời gian thông dụng của hệ thông Unix, tìm hiểu thêm tại

import datetime

# Dạng datetime
date_time_now = datetime.datetime.now[]

# Dạng timestamp
timestamp_now = date_time_now.timestamp[]

Kiểm tra kiểu timezone

import datetime
import pytz

# Dạng native date
date_time_now = datetime.datetime.now[]
print[date_time_now.tzname[]]

# Dạng utc
UTC = pytz.utc
date_time_utc_now = UTC.localize[date_time_now]
print[date_time_utc_now.tzname[]]

Lưu ý: không sử dụng hàm replace, hàm replace sẽ chỉ thay đổi tzinfo không qui đổi thời gian từ múi giờ này sang múi giờ khác

Nếu bạn ở múi giờ Việt Nam [GMT + 7], tức nếu hiện tại là 8 giờ sáng [giờ Việt Nam] thì quy ra giờ UTC tức 1 giờ sáng [giờ UTC]. Vậy nếu Datetime đang ở múi giờ UTC, ta phải convert nó sáng giờ Việt Nam

import datetime
import pytz

# Dạng native date
date_time_now = datetime.datetime.now[]
print[date_time_now.tzname[]]

# Dạng utc
UTC = pytz.utc
date_time_utc_now = UTC.localize[date_time_now]
print[date_time_utc_now.tzname[]]

# Dạng 'Asia/Ho_Chi_Minh'

VN_TZ = pytz.timezone['Asia/Ho_Chi_Minh']
date_time_vntz_now = date_time_utc_now.astimezone[VN_TZ]
print[date_time_vntz_now.tzname[]]

import datetime

date_time_now = datetime.datetime.now[]
timestamp_now = date_time_now.timestamp[]

# Convert timestamp thành dạng Datetime
timestamp_to_datetime = datetime.datetime.fromtimestamp[timestamp_now]

ISO 8601 là một tiêu chuẩn quốc tế, được đưa ra bởi Tổ chức tiêu chuẩn hóa quốc tế [ISO] lần đầu tiên năm 1988, mô tả quy cách viết ngày tháng và thời gian theo cách đơn giản nhất mà máy tính có thể hiểu được. Còn đối với Python ISO 8601 Datetime là string format time thông dụng.

Chủ Đề