我想在Python中將當前時間轉換爲+0900。Python:將本地時間轉換爲另一個時區
什麼是適當的方式來做到這一點(假設在時間模塊中)?
我讀過這不包括在Python中,你必須使用類似pytz的東西。
我不想在服務器基礎上或全局更改它,只是在這一個實例中。
我想在Python中將當前時間轉換爲+0900。Python:將本地時間轉換爲另一個時區
什麼是適當的方式來做到這一點(假設在時間模塊中)?
我讀過這不包括在Python中,你必須使用類似pytz的東西。
我不想在服務器基礎上或全局更改它,只是在這一個實例中。
您可以改用datetime
module。從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開始)
在datetime
模塊中,有一個稱爲tzinfo
的抽象基類,它控制datetime.datetime
和datetime.time
如何處理時區。你基本上派生自己的課程來控制時區解釋。我從來沒有親自使用它,所以我不能多說這些。
不幸的是,我相信,唯一的時區控制是直接在time
模塊工作中看到的。
我想將電流轉換Python中的時間爲+0900 ...
我不想在服務器基礎上或全局範圍內更改它,只是在這一個實例中。
爲了獲得當前時間+0900
時區UTC的偏移量:
from datetime import datetime, timedelta
current_time_in_utc = datetime.utcnow()
result = current_time_in_utc + timedelta(hours=9)
不要使用意識到datetime對象,除非你還使用pytz庫,否則你可能會由於DST過渡和其它時區錯誤的結果變化。如果你需要對datetime對象進行一些算術操作;首先將它們轉換爲UTC。
這完全是我所需要的。謝謝! – Tensigh 2017-03-31 16:11:08
萬一可以使用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))
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
謝謝。很好的答案!您還可以添加'print datetime.utcnow()'來顯示時間的完整圖片 - 您的本地,UTC和移動時間。 – 2014-12-01 12:32:23