Trong bài viết này, bạn sẽ học cách chuyển đổi dấu thời gian thành đối tượng DateTime và đối tượng DateTime thành dấu thời gian [với sự trợ giúp của các ví dụ].
Nó khá phổ biến để lưu trữ ngày và giờ làm dấu thời gian trong cơ sở dữ liệu. Dấu thời gian UNIX là số giây giữa một ngày cụ thể đến ngày 1 tháng 1 năm 1970 tại UTC.
Ví dụ 1: Python Dấu thời gian cho DateTime
from datetime import datetime
timestamp = 1545730073
dt_object = datetime.fromtimestamp[timestamp]
print["dt_object =", dt_object]
print["type[dt_object] =", type[dt_object]]
Khi bạn chạy chương trình, đầu ra sẽ là:
dt_object = 2018-12-25 09:27:53 type[dt_object] =
Ở đây, chúng tôi đã nhập lớp
dt_object = 2018-12-25 09:27:53 type[dt_object] =7 từ mô -đun DateTime. Sau đó, chúng tôi đã sử dụng
dt_object = 2018-12-25 09:27:53 type[dt_object] =8 ClassMethod trả về ngày và giờ địa phương [đối tượng DateTime]. Đối tượng này được lưu trữ trong biến DT_Object.
Lưu ý: Bạn có thể dễ dàng tạo một chuỗi biểu diễn ngày và thời gian từ một đối tượng dt_object = 2018-12-25 09:27:53
type[dt_object] =
7 bằng phương thức strftime []. You can easily create a string representing date and time from a
dt_object = 2018-12-25 09:27:53 type[dt_object] =7 object using strftime[] method.
Ví dụ 2: Python DateTime to Timestamp
Bạn có thể nhận dấu thời gian từ một đối tượng DateTime bằng phương thức
from datetime import datetime
# current date and time
now = datetime.now[]
timestamp = datetime.timestamp[now]
print["timestamp =", timestamp]
0.from datetime import datetime
# current date and time
now = datetime.now[]
timestamp = datetime.timestamp[now]
print["timestamp =", timestamp]
Có hai phần:
- Chuyển đổi dấu thời gian UNIX ["giây kể từ kỷ nguyên"] thành thời gian địa phương
- Hiển thị thời gian cục bộ trong định dạng mong muốn.
Một cách di động để có được thời gian địa phương hoạt động ngay cả khi múi giờ địa phương có độ lệch UTC khác trong quá khứ và Python không có quyền truy cập vào cơ sở dữ liệu TZ là sử dụng thời gian
from datetime import datetime
# current date and time
now = datetime.now[]
timestamp = datetime.timestamp[now]
print["timestamp =", timestamp]
1:#!/usr/bin/env python
from datetime import datetime
import tzlocal # $ pip install tzlocal
unix_timestamp = float["1284101485"]
local_timezone = tzlocal.get_localzone[] # get pytz timezone
local_time = datetime.fromtimestamp[unix_timestamp, local_timezone]
Để hiển thị nó, bạn có thể sử dụng bất kỳ định dạng thời gian nào được hệ thống của bạn hỗ trợ, ví dụ:
print[local_time.strftime["%Y-%m-%d %H:%M:%S.%f%z [%Z]"]]
print[local_time.strftime["%B %d %Y"]] # print date in your format
Nếu bạn không cần thời gian địa phương, thay vào đó là thời gian UTC dễ đọc: thay vào đó:
utc_time = datetime.utcfromtimestamp[unix_timestamp]
print[utc_time.strftime["%Y-%m-%d %H:%M:%S.%f+00:00 [UTC]"]]
Nếu bạn không quan tâm đến các vấn đề về thời gian có thể ảnh hưởng đến ngày được trả lại hoặc nếu Python có quyền truy cập vào cơ sở dữ liệu TZ trên hệ thống của bạn:
local_time = datetime.fromtimestamp[unix_timestamp]
print[local_time.strftime["%Y-%m-%d %H:%M:%S.%f"]]
Trên Python 3, bạn có thể nhận được một DateTime nhận biết thời gian chỉ bằng cách sử dụng stdlib [phần bù UTC có thể sai nếu Python không có quyền truy cập vào cơ sở dữ liệu TZ trên hệ thống của bạn, ví dụ: trên Windows]:
#!/usr/bin/env python3
from datetime import datetime, timezone
utc_time = datetime.fromtimestamp[unix_timestamp, timezone.utc]
local_time = utc_time.astimezone[]
print[local_time.strftime["%Y-%m-%d %H:%M:%S.%f%z [%Z]"]]
Các chức năng từ mô -đun
from datetime import datetime
# current date and time
now = datetime.now[]
timestamp = datetime.timestamp[now]
print["timestamp =", timestamp]
2 là các trình bao bọc mỏng xung quanh API C tương ứng và do đó chúng có thể ít di động hơn các phương thức dt_object = 2018-12-25 09:27:53 type[dt_object] =7 tương ứng nếu không bạn cũng có thể sử dụng chúng:
#!/usr/bin/env python
import time
unix_timestamp = int["1284101485"]
utc_time = time.gmtime[unix_timestamp]
local_time = time.localtime[unix_timestamp]
print[time.strftime["%Y-%m-%d %H:%M:%S", local_time]]
print[time.strftime["%Y-%m-%d %H:%M:%S+00:00 [UTC]", utc_time]]
Bài viết này sẽ thảo luận về cách chuyển đổi thời gian UTC [trong chuỗi hoặc dưới dạng đối tượng DateTime] sang thời gian địa phương trong Python. Giả sử bạn đang ở trong một múi giờ không phải là UTC. Nhưng bạn có một DateTime trong UTC Timezone và bạn muốn chuyển đổi nó thành timezone địa phương của bạn. Ví dụ: bạn có dấu thời gian UTC như một chuỗi, Bây giờ bạn muốn chuyển đổi nó thành timezone địa phương của bạn. Nếu bạn đang ở châu Á/calcutta timezone, thì kết quả sẽ giống như, Tất cả các giải pháp chúng tôi sẽ thảo luận để chuyển đổi UTC sang thời gian địa phương, sẽ áp dụng cho tất cả các múi giờ. Điều đó có nghĩa là, bất kể thời gian địa phương của bạn là gì, bạn có thể dễ dàng chuyển đổi DateTime UTC sang thời gian địa phương của bạn bằng các giải pháp này. Hãy bắt đầu nhìn vào chúng từng cái một. Chúng ta có thể sử dụng mô -đun DateTime cho việc này. Các bước thực hiện như sau, Quảng cáo Hàm astimezone [] chấp nhận một thể hiện múi giờ tz làm đối số. Nó trả về một thể hiện DateTime mới theo tham số múi giờ được chỉ định TZ, tức là nó chuyển đổi thời gian trong cuộc gọi DateTime thành múi giờ được chỉ định và trả về một đối tượng DateTime mới chứa nó. Hãy cùng xem một ví dụ hoàn chỉnh để chuyển đổi chuỗi DateTime UTC sang thời gian cục bộ, tức là.10/21/2021 8:18:19
dt_object = 2018-12-25 09:27:53
type[dt_object] =
0
dt_object = 2018-12-25 09:27:53 type[dt_object] =1
Output:
dt_object = 2018-12-25 09:27:53 type[dt_object] =2
Chuyển đổi đối tượng DateTime UTC từ DateTime cục bộ
Thay vì chuỗi, nếu bạn đã có đối tượng DateTime với thời gian UTC, chúng ta có thể chuyển đổi nó trực tiếp thành đối tượng DateTime bằng múi giờ cục bộ bằng astimezone []. Ví dụ,
dt_object = 2018-12-25 09:27:53 type[dt_object] =3
Output:
dt_object = 2018-12-25 09:27:53 type[dt_object] =4
Chuyển đổi DateTime UTC hiện tại thành DateTime cục bộ trong Python
Giả sử chúng ta có một đối tượng DateTime chứa thời gian hiện tại trong thời gian UTC và có thông tin múi giờ. Sử dụng astimezone [], chúng ta có thể chuyển đổi nó thành múi giờ địa phương và nhận thời gian địa phương hiện tại. Vì vậy, chúng tôi sẽ chuyển thời gian cục bộ như một đối số cho hàm astimezone []. Ví dụ,
dt_object = 2018-12-25 09:27:53 type[dt_object] =5
Output:
dt_object = 2018-12-25 09:27:53 type[dt_object] =6
Bản tóm tắt
Chúng tôi đã học được cách chuyển đổi thời gian UTC sang timezone địa phương ở Python.