Hướng dẫn how do you convert datetime to utc in python? - làm thế nào để bạn chuyển đổi datetime sang utc trong python?

Lưu ý - Tính đến năm 2020, bạn không nên sử dụng

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
0 hoặc
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
1. Khi bạn có lẽ đã chuyển sang Python3, bạn nên sử dụng các đối tượng DateTime Agne Agree.
-- As of 2020 you should not be using
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
0 or
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
1. As you've presumably moved on to python3,you should be using timezone aware datetime objects.

>>> from datetime import timezone
>>> 
>>> # alternative to '.utcnow()'
>>> dt_now = datetime.datetime.now(datetime.timezone.utc)
>>>
>>> # alternative to '.utcfromtimestamp()'
>>> dt_ts = datetime.fromtimestamp(1571595618.0, tz=timezone.utc)

Để biết chi tiết, xem: https://blog.ganssle.io/articles/2019/11/utcnow.html

Câu trả lời ban đầu (từ 2010):

Hàm UTCNow () của mô -đun DateTime có thể được sử dụng để có được thời gian UTC hiện tại.

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'

Như liên kết đã đề cập ở trên bởi Tom: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/ nói:

UTC là một múi giờ không có thời gian tiết kiệm ánh sáng ban ngày và vẫn là một múi giờ mà không thay đổi cấu hình trong quá khứ.

Luôn đo lường và lưu trữ thời gian ở UTC.

Nếu bạn cần ghi lại nơi thời gian được thực hiện, hãy lưu trữ riêng. Không lưu trữ thông tin thời gian địa phương + thời gian!Do not store the local time + timezone information!

Lưu ý - Nếu bất kỳ dữ liệu nào của bạn ở trong khu vực sử dụng DST, hãy sử dụng

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
2 và xem câu trả lời của John Millikin. - If any of your data is in a region that uses DST, use
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
2 and take a look at John Millikin's answer.

Nếu bạn muốn có được thời gian UTC từ một chuỗi nhất định và đủ may mắn của bạn để ở trong một khu vực trên thế giới không sử dụng DST hoặc bạn có dữ liệu chỉ được bù đắp từ UTC mà không có DST được áp dụng:

-> Sử dụng thời gian địa phương làm cơ sở cho giá trị bù:

>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'

-> Hoặc, từ một phần bù đã biết, bằng cách sử dụng datetime.timedelta ():

>>> UTC_OFFSET = 10
>>> result_utc_datetime = local_datetime - datetime.timedelta(hours=UTC_OFFSET)
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'

UPDATE:

Vì Python 3.2

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
3 có sẵn. Bạn có thể tạo đối tượng DateTime Agezone Aware với lệnh bên dưới:

import datetime

timezone_aware_dt = datetime.datetime.now(datetime.timezone.utc)

Nếu bạn đã sẵn sàng để thực hiện chuyển đổi timezone, hãy đọc bài này:

https://medium.com/@eleroy/10-things-you-need-to-know-about-date-and-time-in-python-with-datetime-pytz-dateutil-timedelta-309bfbafb3f7

Giả sử chúng ta có một đối tượng

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
4 đại diện cho một thời gian cụ thể (trong múi giờ địa phương của máy của chúng ta).

>>> import datetime
>>> april_fools = datetime.datetime(2030, 4, 1, 10, 0)

Biến

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
5 chỉ vào một đối tượng
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
6 đại diện cho 10 giờ sáng hoặc ngày 1 tháng 4 năm 2030 (trong timezone địa phương của chúng tôi):

>>> april_fools
datetime.datetime(2030, 4, 1, 10, 0)

Chuyển đổi thời gian sang UTC trong Python

Để chuyển đổi thời gian này sang UTC, chúng tôi có thể sử dụng phương thức

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
7 trên đối tượng
>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
4 của chúng tôi:

>>> utc_april_fools = april_fools.astimezone(datetime.timezone.utc)
>>> utc_april_fools
datetime.datetime(2030, 4, 1, 17, 0, tzinfo=datetime.timezone.utc)
>>> print(utc_april_fools)
2030-04-01 17:00:00+00:00

Nhận thời gian hiện tại ở UTC

Điều gì sẽ xảy ra nếu chúng ta muốn chuyển đổi thời gian hiện tại sang UTC?

Trong khi các đối tượng

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
6 của Python có phương thức
>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
0:

>>> datetime.datetime.utcnow()
datetime.datetime(2030, 4, 1, 8, 15, 59, 89013)

Tài liệu Python khuyến nghị chuyển thời gian đích (

>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
1 trong trường hợp của chúng tôi) cho phương thức
>>> # Obtain the UTC Offset for the current system:
>>> UTC_OFFSET_TIMEDELTA = datetime.datetime.utcnow() - datetime.datetime.now()
>>> local_datetime = datetime.datetime.strptime("2008-09-17 14:04:00", "%Y-%m-%d %H:%M:%S")
>>> result_utc_datetime = local_datetime + UTC_OFFSET_TIMEDELTA
>>> result_utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2008-09-17 04:04:00'
2 thay thế: thay vào đó:

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2030, 4, 1, 8, 15, 59, 89013, tzinfo=datetime.timezone.utc)

Bằng cách đó, bạn sẽ kết thúc với một đối tượng nhận biết thời gian

>>> import datetime
>>> utc_datetime = datetime.datetime.utcnow()
>>> utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
'2010-02-01 06:59:19'
6 (xem các đối tượng ngây thơ và nhận thức để biết thêm về nhận thức về thời gian).

DateTime định dạng UTC là gì?

Thời gian được thể hiện trong UTC (thời gian phối hợp phổ biến), với một nhà chỉ định UTC đặc biệt ("Z"). Thời gian được thể hiện bằng thời gian địa phương, cùng với múi giờ bù bằng giờ và phút. Một múi giờ bù của "+hh: mm" chỉ ra rằng ngày/thời gian sử dụng múi giờ cục bộ là "HH" giờ và "mm" phút trước UTC.Coordinated Universal Time), with a special UTC designator ("Z"). Times are expressed in local time, together with a time zone offset in hours and minutes. A time zone offset of "+hh:mm" indicates that the date/time uses a local time zone which is "hh" hours and "mm" minutes ahead of UTC.

Dấu thời gian hiện tại ở UTC là gì?

Thời gian UTC ở định dạng ISO-8601 là gì?Thời gian hiện tại: 19:51:38 UTC.19:51:38 UTC.