Hướng dẫn datetime hour python - ngày giờ giờ trăn

Tổng quan

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.

Show

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

Tips 2: Convert String thành Datetime

Xử lý bằng hàm

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)
3

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
    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)
    
    3 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
    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)
    
    5 để 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)
    
    6

Tips 3: Chuyển hóa kiểu Datetime sang Timestamp Python

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()

Tips 4: Chuyển hóa kiểu native date sang UTC timezone

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

Tips 5: Convert UTC sang timezone 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())

Tips 6: Chuyên từ Timestamp sang Datetime

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)

Tips 7: Convert Datetime sang ISO 8601

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.

import datetime

date_time_now = datetime.datetime.now()

# Convert Datetime thành dạng ISO 8601
iso_format = date_time_now.isoformat()

Nguồn

https://vi.wikipedia.org/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn:M%C3%BAi_gi%E1%BB%9D

https://vi.wikipedia.org/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn:M%C3%BAi_gi%E1%BB%9D


Thực hiện bởi cloud365.vn

Làm thế nào để bạn tăng thời gian trong Python?

Nội dung chính ShowShow

  • Thêm giờ vào dấu thời gian trong Python bằng cách sử dụng TimeDelta
  • Thêm giờ để có dấu thời gian nhất định trong Python bằng cách sử dụng gấu trúc
  • Khi chúng tôi thêm một thời gian (thời lượng 2 giờ) vào đối tượng DateTime, do đó, nó đã trả về một đối tượng DateTime mới chỉ vào dấu thời gian mới. Sau đó, chúng tôi đã chuyển đổi đối tượng DateTime sang định dạng chuỗi cần thiết bằng cách sử dụng DateTime.strftime (). Nếu chuỗi dấu thời gian của bạn có một số định dạng khác, thì bạn có thể thay đổi định dạng theo đó trong khi sử dụng strptime () & strftime ().
  • Làm cách nào để thêm giờ vào Timedelta?
  • Làm cách nào để thêm thời gian vào một datetime?
  • Làm thế nào để bạn tăng thời gian trong Python?
  • Làm cách nào để thêm giờ và phút trong Python?

Giả sử bạn có dấu thời gian là chuỗi và bạn muốn thêm n giờ vào nó, trong đó n có thể là bất kỳ số nào. Nhưng bạn muốn dấu thời gian cuối cùng sau khi thêm n giờ, theo định dạng chuỗi đã cho. Hãy để xem cách làm điều đó,

Thêm giờ vào dấu thời gian trong Python bằng cách sử dụng TimeDelta

Thêm giờ để có dấu thời gian nhất định trong Python bằng cách sử dụng gấu trúcmodule datetime for manipulation of date and time. It consists of following classes,

  • Khi chúng tôi thêm một thời gian (thời lượng 2 giờ) vào đối tượng DateTime, do đó, nó đã trả về một đối tượng DateTime mới chỉ vào dấu thời gian mới. Sau đó, chúng tôi đã chuyển đổi đối tượng DateTime sang định dạng chuỗi cần thiết bằng cách sử dụng DateTime.strftime (). Nếu chuỗi dấu thời gian của bạn có một số định dạng khác, thì bạn có thể thay đổi định dạng theo đó trong khi sử dụng strptime () & strftime (). An object of date class specifies a date using year, month and day.
  • Làm cách nào để thêm giờ vào Timedelta?An object of time class specifies a timestamp using hour, minute, second, microsecond, and tzinfo.
  • Làm cách nào để thêm thời gian vào một datetime?: An object of datetime is a combination of a date and a time.
  • Làm thế nào để bạn tăng thời gian trong Python? A duration, that represents the difference between two dates or times or datetimes.
  • Làm cách nào để thêm giờ và phút trong Python?It contains the timezone information.

Giả sử bạn có dấu thời gian là chuỗi và bạn muốn thêm n giờ vào nó, trong đó n có thể là bất kỳ số nào. Nhưng bạn muốn dấu thời gian cuối cùng sau khi thêm n giờ, theo định dạng chuỗi đã cho. Hãy để xem cách làm điều đó,datetime and timedelta classes of the datetime module.

Python cung cấp một mô -đun dữ liệu để thao tác ngày và giờ. Nó bao gồm các lớp học sau,module datetime for manipulation of date and time. It consists of following classes,

DateTime.Date: Một đối tượng của lớp ngày chỉ định ngày sử dụng năm, tháng và ngày. An object of date class specifies a date using year, month and day.

  • DateTime.time: Một đối tượng của lớp thời gian chỉ định dấu thời gian bằng giờ, phút, giây, micro giây và tzinfo.An object of time class specifies a timestamp using hour, minute, second, microsecond, and tzinfo. If the given timestamp is in a string format, then we need to convert it to the datetime object. For that we can use the datetime.strptime() function. Whereas, if the given timestamp is already a datetime object, then you can skip this step.
  • DateTime.Datetime: Một đối tượng của DateTime là sự kết hợp của ngày và thời gian.: An object of datetime is a combination of a date and a time. Create an object of timedelta, to represent an interval of N hours. For that, pass the argument hours with value N in the timedelta constructor.
  • datetime.timedelta: một thời lượng, thể hiện sự khác biệt giữa hai ngày hoặc thời gian hoặc dữ liệu. A duration, that represents the difference between two dates or times or datetimes. Add the timedelta object to the datetime object. It will give us a new datetime object, pointing to a new timestamp i.e. N hours after the given timestamp.
  • DateTime.tzinfo: Nó chứa thông tin múi giờ.It contains the timezone information. If you want the final timestamp in string format, then convert the datetime object to string using strftime(). You can pass the format string as argument and it will convert the datetime object to a string of the specified format.

Để thêm giờ trong một dấu thời gian nhất định, chúng tôi sẽ sử dụng các lớp DateTime và Timedelta của mô -đun DateTime.datetime and timedelta classes of the datetime module.

Các bước để thêm N giờ vào DateTime như sau,

from datetime import datetime
from datetime import timedelta

# Given timestamp in string
time_str = '24/7/2021 11:13:08.230010'
date_format_str = '%d/%m/%Y %H:%M:%S.%f'

# create datetime object from timestamp string
given_time = datetime.strptime(time_str, date_format_str)

print('Given Time: ', given_time)

n = 2
# Add 2 hours to datetime object
final_time = given_time + timedelta(hours=n)

print('Final Time (2 hours after given time ): ', final_time)

# Convert datetime object to string in specific format 
final_time_str = final_time.strftime('%d/%m/%Y %H:%M:%S.%f')
print('Final Time as string object: ', final_time_str)

Quảng cáo

Given Time:  2021-07-24 11:13:08.230010
Final Time (2 hours after given time ):  2021-07-24 13:13:08.230010
Final Time as string object:  24/07/2021 13:13:08.230010

Bước 1: Nếu dấu thời gian đã cho ở định dạng chuỗi, thì chúng ta cần chuyển đổi nó thành đối tượng DateTime. Cho rằng chúng ta có thể sử dụng hàm DateTime.strptime (). Trong khi đó, nếu dấu thời gian đã cho đã là một đối tượng DateTime, thì bạn có thể bỏ qua bước này. If the given timestamp is in a string format, then we need to convert it to the datetime object. For that we can use the datetime.strptime() function. Whereas, if the given timestamp is already a datetime object, then you can skip this step.

Khi chúng tôi thêm một thời gian (thời lượng 2 giờ) vào đối tượng DateTime, do đó, nó đã trả về một đối tượng DateTime mới chỉ vào dấu thời gian mới. Sau đó, chúng tôi đã chuyển đổi đối tượng DateTime sang định dạng chuỗi cần thiết bằng cách sử dụng DateTime.strftime (). Nếu chuỗi dấu thời gian của bạn có một số định dạng khác, thì bạn có thể thay đổi định dạng theo đó trong khi sử dụng strptime () & strftime ().

Thêm giờ để có dấu thời gian nhất định trong Python bằng cách sử dụng gấu trúc

Pandas cung cấp một ngày học lớp, để lưu trữ thông tin thời lượng hoặc khoảng. Nó chủ yếu được sử dụng để tăng hoặc giảm dấu thời gian. Nó có thể được sử dụng với mô -đun DateTime để thêm N giờ vào DateTime. Hãy để hiểu với một ví dụ,DateOffset, to store the duration or interval information. It is mostly used to increment or decrement a timestamp. It can be used with datetime module to add N hours to a datetime. Let’s understand with an example,DateOffset, to store the duration or interval information. It is mostly used to increment or decrement a timestamp. It can be used with datetime module to add N hours to a datetime. Let’s understand with an example,

Thêm 3 giờ vào DateTime trong Python

from datetime import datetime
import pandas as pd

# Given timestamp in string
time_str = '24/7/2021 11:13:08.230010'
date_format_str = '%d/%m/%Y %H:%M:%S.%f'

# create datetime object from timestamp string
given_time = datetime.strptime(time_str, date_format_str)

print('Given Time: ', given_time)

n = 3
# Add 3 hours to datetime object
final_time = given_time + pd.DateOffset(hours=n)

print('Final Time (3 hours after given time ): ', final_time)

# Convert datetime object to string in specific format 
final_time_str = final_time.strftime('%d/%m/%Y %H:%M:%S.%f')
print('Final Time as string object: ', final_time_str)

Đầu ra

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

Chúng tôi đã thêm 2 giờ vào dấu thời gian24/7/2021 11: 13: 08.230010 ′ để làm cho nó2424/07/2021 13: 13: 08.230010.DateOffset object by passing hours argument as 3. Then we added this DateOffset object to the datetime object. It returned a new datetime object pointing to a new timestamp i.e. after 3 hours from the given timestamp.DateOffset object by passing hours argument as 3. Then we added this DateOffset object to the datetime object. It returned a new datetime object pointing to a new timestamp i.e. after 3 hours from the given timestamp.

Khi chúng tôi thêm một thời gian (thời lượng 2 giờ) vào đối tượng DateTime, do đó, nó đã trả về một đối tượng DateTime mới chỉ vào dấu thời gian mới. Sau đó, chúng tôi đã chuyển đổi đối tượng DateTime sang định dạng chuỗi cần thiết bằng cách sử dụng DateTime.strftime (). Nếu chuỗi dấu thời gian của bạn có một số định dạng khác, thì bạn có thể thay đổi định dạng theo đó trong khi sử dụng strptime () & strftime ().

Thêm giờ để có dấu thời gian nhất định trong Python bằng cách sử dụng gấu trúcdateutil module provides a class relativedelta, which represents an interval of time. The relativedelta class has all the attributes to represent a duration i.e. Year, Month, Day, Hours, Minutes, Seconds and Microseconds.dateutil module provides a class relativedelta, which represents an interval of time. The relativedelta class has all the attributes to represent a duration i.e. Year, Month, Day, Hours, Minutes, Seconds and Microseconds.

Pandas cung cấp một ngày học lớp, để lưu trữ thông tin thời lượng hoặc khoảng. Nó chủ yếu được sử dụng để tăng hoặc giảm dấu thời gian. Nó có thể được sử dụng với mô -đun DateTime để thêm N giờ vào DateTime. Hãy để hiểu với một ví dụ,

Thêm 3 giờ vào DateTime trong Python

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)
1

Đầu ra

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)
2

Chúng tôi đã thêm 2 giờ vào dấu thời gian24/7/2021 11: 13: 08.230010 ′ để làm cho nó2424/07/2021 13: 13: 08.230010.DateOffset object by passing hours argument as 3. Then we added this DateOffset object to the datetime object. It returned a new datetime object pointing to a new timestamp i.e. after 3 hours from the given timestamp.

Summary:

Khi chúng tôi thêm một thời gian (thời lượng 2 giờ) vào đối tượng DateTime, do đó, nó đã trả về một đối tượng DateTime mới chỉ vào dấu thời gian mới. Sau đó, chúng tôi đã chuyển đổi đối tượng DateTime sang định dạng chuỗi cần thiết bằng cách sử dụng DateTime.strftime (). Nếu chuỗi dấu thời gian của bạn có một số định dạng khác, thì bạn có thể thay đổi định dạng theo đó trong khi sử dụng strptime () & strftime ().

Thêm giờ để có dấu thời gian nhất định trong Python bằng cách sử dụng gấu trúcdateutil module provides a class relativedelta, which represents an interval of time. The relativedelta class has all the attributes to represent a duration i.e. Year, Month, Day, Hours, Minutes, Seconds and Microseconds.

Pandas cung cấp một ngày học lớp, để lưu trữ thông tin thời lượng hoặc khoảng. Nó chủ yếu được sử dụng để tăng hoặc giảm dấu thời gian. Nó có thể được sử dụng với mô -đun DateTime để thêm N giờ vào DateTime. Hãy để hiểu với một ví dụ,

Chúng tôi đã thêm 2 giờ vào dấu thời gian24/7/2021 11: 13: 08.230010 ′ để làm cho nó2424/07/2021 13: 13: 08.230010.

Làm cách nào để thêm giờ vào Timedelta?

Bước 1: Nếu dấu thời gian đã cho ở định dạng chuỗi, thì chúng ta cần chuyển đổi nó thành đối tượng DateTime. ....

Bước 2: Tạo một đối tượng của Timedelta, để biểu thị khoảng thời gian N giờ. ...., e.g. result = dt + timedelta(hours=2, minutes=25, seconds=24) . The timedelta class can be passed the hours , minutes and seconds arguments and adds the specified time to the datetime.

Bước 3: Thêm đối tượng TimeDelta vào đối tượng DateTime ..

Làm cách nào để thêm thời gian vào một datetime?timedelta(hours = 1). You can use days, seconds, microseconds, milliseconds, minutes, hours and weeks with timedelta.

Sử dụng lớp TimeDelta () từ mô -đun DateTime để thêm thời gian vào DateTime, ví dụ:Kết quả = dt + Timedelta (giờ = 2, phút = 25, giây = 24).Lớp Timedelta có thể được thông qua các đối số, phút và giây và thêm thời gian quy định cho DateTime., e.g. result = dt + timedelta(hours=2, minutes=25, seconds=24) . The timedelta class can be passed the hours , minutes and seconds arguments and adds the specified time to the datetime.

Làm thế nào để bạn tăng thời gian trong Python?.

Một lần nữa, để thêm một ngày hoặc giờ vào ngày hiện tại, hãy sử dụng phương thức TimeDelta ().Ví dụ: để tăng thời gian hiện tại một giờ, sử dụng TimedelTA (giờ = 1).Bạn có thể sử dụng ngày, giây, micro giây, mili giây, phút, giờ và tuần với thời gian.timedelta(hours = 1). You can use days, seconds, microseconds, milliseconds, minutes, hours and weeks with timedelta.

Làm cách nào để thêm giờ và phút trong Python?