Hướng dẫn convert utc timestamp to datetime python - chuyển đổi dấu thời gian utc thành datetime python

Có hai phần:

  1. Chuyển đổi dấu thời gian UNIX ("giây kể từ kỷ nguyên") thành thời gian địa phương
  2. 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

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

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
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
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
3 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 mô tả cách chuyển đổi giữa thời gian UNIX (thời gian epoch) và đối tượng

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
3, đại diện cho ngày và thời gian trong Python.

  • Thời gian UNIX là gì (thời gian kỷ nguyên, thời gian POSIX) là gì?
  • Chuyển đổi Thời gian UNIX (Thời gian Epoch) thành
    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
    
    3:
    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
    
    6
  • Chuyển đổi
    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
    
    3 sang thời gian UNIX (Thời gian Epoch):
    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
    
    8

Sử dụng phương thức

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
8 để chuyển đổi đối tượng
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
3 thành thời gian UNIX (thời gian epoch). Thời gian UNIX được trả lại dưới dạng số điểm nổi
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
9.

DateTime.DateTime.Timestamp () - Các loại ngày và giờ cơ bản - Tài liệu Python 3.10.0

  • Sử dụng đối tượng
    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
    
    3 được tạo bởi mã mẫu ở trên làm ví dụ.

Thời gian UNIX là gì (thời gian kỷ nguyên, thời gian POSIX) là gì?

Thời gian UNIX (còn được gọi là thời gian thời gian, thời gian POSIX) là số giây đã trôi qua kể từ thời đại Unix, 00:00:00 UTC (thời gian phối hợp toàn cầu) vào ngày 1 tháng 1 năm 1970.

Thời gian UNIX cũng được sử dụng để thể hiện dấu thời gian tệp (ngày tạo và sửa đổi). Để biết thêm thông tin, xem bài viết sau.

Chuyển đổi Thời gian UNIX (Thời gian Epoch) thành 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 3: 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 6

Để thao tác ngày và thời gian trong Python, bạn có thể sử dụng mô -đun DateTime.

  • DateTime - Các loại ngày và thời gian cơ bản - Tài liệu Python 3.10.0

Sử dụng

utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
1 của mô -đun
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
3 để chuyển đổi thời gian UNIX (thời gian epoch) thành đối tượng
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
3. Chỉ định thời gian Unix là một đối số.

  • DateTime.DateTime.FromTimestamp () - Các loại ngày và thời gian cơ bản - Tài liệu Python 3.10.0

Theo mặc định, nó được chuyển đổi thành ngày và giờ địa phương. Ví dụ: nếu bạn chạy chương trình trên máy có môi trường Giờ chuẩn (JST) của Nhật Bản, chênh lệch thời gian (+9 giờ) được tính đến.

Nếu

utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
4 được chỉ định là đối số:

import datetime

dt = datetime.datetime.fromtimestamp(0)

print(dt)
# 1970-01-01 09:00:00

print(type(dt))
# 

print(dt.tzinfo)
# None

Theo mặc định, các đối tượng ngây thơ

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
3 với thuộc tính
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
6 được đặt thành
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
7 được trả về.

Nếu bạn chỉ định múi giờ cho đối số thứ hai

utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
8, thuộc tính
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
6 được đặt và đối tượng
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
3 nhận thức được trả về với ngày và thời gian được chuyển đổi chính xác sang múi giờ đó.

  • DateTime - Đối tượng Timezone - Các loại ngày và giờ cơ bản - Tài liệu Python 3.10.0

dt_utc_aware = datetime.datetime.fromtimestamp(0, datetime.timezone.utc)

print(dt_utc_aware)
# 1970-01-01 00:00:00+00:00

print(dt_utc_aware.tzinfo)
# UTC

dt_jst_aware = datetime.datetime.fromtimestamp(0, datetime.timezone(datetime.timedelta(hours=9)))

print(dt_jst_aware)
# 1970-01-01 09:00:00+09:00

print(dt_jst_aware.tzinfo)
# UTC+09:00

local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
1 trả về một đối tượng
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
3 ngây thơ trong thuộc tính UTC (=
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
6 là
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
7) cũng được cung cấp.

  • datetime.datetime.utcfromtimestamp () - Các loại ngày và thời gian cơ bản - Tài liệu Python 3.10.0

dt_utc_naive = datetime.datetime.utcfromtimestamp(0)

print(dt_utc_naive)
# 1970-01-01 00:00:00

print(dt_utc_naive.tzinfo)
# None

Chuyển đổi 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 3 sang thời gian UNIX (Thời gian Epoch): 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 8

Sử dụng phương thức

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
8 để chuyển đổi đối tượng
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
3 thành thời gian UNIX (thời gian epoch). Thời gian UNIX được trả lại dưới dạng số điểm nổi
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
9.

  • DateTime.DateTime.Timestamp () - Các loại ngày và giờ cơ bản - Tài liệu Python 3.10.0

Sử dụng đối tượng

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
3 được tạo bởi mã mẫu ở trên làm ví dụ.

print(dt)
# 1970-01-01 09:00:00

print(dt.timestamp())
# 0.0

print(type(dt.timestamp()))
# 

Các đối tượng ngây thơ với thuộc tính

utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
6 được đặt thành
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
7 được chuyển đổi dựa trên múi giờ của môi trường đang chạy và các đối tượng nhận biết với thuộc tính
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
6 được chuyển đổi dựa trên múi giờ của chúng.

Lưu ý rằng đối tượng được tạo bởi

#!/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)"))
4 là ngây thơ trong thuộc tính UTC (
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
6 là
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
7), do đó, kết quả khác với các đối tượng khác.

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
0

Nếu bạn không cần tính đến múi giờ, bạn không cần phải lo lắng về nó vì cả

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
6 và
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
8 đều được chuyển đổi dựa trên thời gian cục bộ của máy.