簡體   English   中英

Python:將本地時間轉換為另一個時區

[英]Python: Convert local time to another time zone

我想在Python中將當前時間轉換為+0900。

這樣做的恰當方法是什么(假設在時間模塊中)?

我讀過這不包含在Python中,你必須使用像pytz這樣的東西。

我不希望在服務器或全局上更改它,只是在這一個實例中。

將數據從UTC轉換為IST的示例

from datetime import datetime
from pytz import timezone

format = "%Y-%m-%d %H:%M:%S %Z%z"

# Current time in UTC
now_utc = datetime.now(timezone('UTC'))
print now_utc.strftime(format)
Output: 2015-05-18 10:02:47 UTC+0000

# Convert to Asia/Kolkata time zone
now_asia = now_utc.astimezone(timezone('Asia/Kolkata'))
print now_asia.strftime(format)
Output: 2015-05-18 15:32:47 IST+0530

我想在Python中將當前時間轉換為+0900 ...
我不希望在服務器或全局上更改它,只是在這一個實例中。

要獲得UTC的+0900時區偏移的當前時間:

from datetime import datetime, timedelta

current_time_in_utc = datetime.utcnow()
result = current_time_in_utc + timedelta(hours=9)

除非您還使用pytz庫,否則不要使用感知日期時間對象,否則由於DST轉換和其他時區更改,您可能會得到錯誤的結果。 如果你需要在datetime對象上做一些算術; 首先將它們轉換為UTC。

您可以改用datetime模塊 改編自http://docs.python.org/library/datetime.html#datetime.tzinfo.fromutc

from datetime import tzinfo, timedelta, datetime

class FixedOffset(tzinfo):
    def __init__(self, offset):
        self.__offset = timedelta(hours=offset)
        self.__dst = timedelta(hours=offset-1)
        self.__name = ''

    def utcoffset(self, dt):
        return self.__offset

    def tzname(self, dt):
        return self.__name

    def dst(self, dt):
        return self.__dst

print datetime.now()
print datetime.now(FixedOffset(9))

得到:

2011-03-12 00:28:32.214000
2011-03-12 14:28:32.215000+09:00

當我運行它(我是UTC-0500另一天,然后DST開始)

為了防止您使用pytz和其他外部模塊,這是一個更直接的解決方案

pip install pytz tzlocal

然后

from datetime import datetime
from pytz import timezone
import pytz
from tzlocal import get_localzone

#timezones
local = get_localzone()
utc = pytz.utc
cet = timezone('CET')

#get now time in different zones
print(datetime.now(local))
print(datetime.now(cet))
print(datetime.now(utc))

#convert local time now to CET
print(datetime.now(local).astimezone(cet))
print(datetime.now(cet).astimezone(utc))

datetime模塊中,有一個名為tzinfo的抽象基類,它控制datetime.datetimedatetime.time如何處理時區。 您基本上派生自己的類來控制時區解釋。 我從來沒有親自使用它,所以我不能多說它。

不幸的是,我相信,我在time模塊中直接看到的唯一時區控制在全球范圍內工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM