在Python中,如何查找計算機設置的UTC時間偏移量?在Python中獲取計算機的UTC偏移量
回答
gmtime()
將返回UTC時間,localtime()
將返回本地時間,因此減去兩者應該會給你utc偏移量。
import time
print -time.timezone
它打印UTC在幾秒鐘內(考慮到夏令時(DST)偏移看到time.altzone:
is_dst = time.daylight and time.localtime().tm_isdst > 0
utc_offset = - (time.altzone if is_dst else time.timezone)
其中UTC偏移是通過定義爲:「爲了獲得本地時間,將utc偏移量添加到utc時間。「
在Python 3.3+中有tm_gmtoff
attribute如果底層C庫支持它:
utc_offset = time.localtime().tm_gmtoff
注:time.daylight
可以在some edge cases給出一個錯誤的結果。
tm_gmtoff
所使用的日期時間自動(如果可用)上的Python 3.3+:
from datetime import datetime, timedelta, timezone
d = datetime.now(timezone.utc).astimezone()
utc_offset = d.utcoffset() // timedelta(seconds=1)
要獲得當前UTC在變通辦法time.daylight
問題,而且有效,即使tm_gmtoff
是不可用的方式偏移, @jts's suggestion到substruct本地和UTC時間可以用來:
import time
from datetime import datetime
ts = time.time()
utc_offset = (datetime.fromtimestamp(ts) -
datetime.utcfromtimestamp(ts)).total_seconds()
要獲得UTC過去/將來的日期偏移,pytz
時區可以使用:
from datetime import datetime
from tzlocal import get_localzone # $ pip install tzlocal
tz = get_localzone() # local timezone
d = datetime.now(tz) # or some other local date
utc_offset = d.utcoffset().total_seconds()
期間DST轉換它的工作原理,它適用於過去即使本地時區有不同的UTC在2010 - 2015年期間的時間,例如,歐洲/莫斯科時間偏移/將來的日期。
這是很好,乾淨。 – Rockallite 2013-12-19 02:25:51
超級有用。謝謝,J.F. – 2015-03-30 03:23:13
請注意,'total_seconds()'僅在Python 3.2+中可用。 – mattst 2016-06-04 13:46:11
我喜歡:
>>> strftime('%z')
'-0700'
我第一次嘗試JTS」的答案,但它給了我錯誤的結果。我現在在-0700,但它是說我在-0800。但是在我能夠減去某些東西之前,我必須做一些轉換,所以也許答案比不正確。
Python不支持''%z''(它可能適用於某些可能使用'time.localtime()。tm_gmtoff')的系統,以獲取utc偏移量作爲數字,而不是字符串)。 (''%z'')的結果應該與@jts的答案相同。如果您不這麼想,請包括您的代碼。 – jfs 2015-04-04 13:23:49
導入時間 時間0 =了time.time() UTC_TIME = time.mktime(time.gmtime(時間0)) LOCAL_TIME = time.mktime(time.localtime(時間0)) 偏移= LOCAL_TIME - UTC_TIME 打印(偏移/(60 * 60)) 給出-8。 – dstromberg 2015-04-04 18:09:40
1.不要把代碼放在註釋裏,而是更新你的答案2.這裏使用mktime()是不正確的,用'calendar.timegm()'或'datetime()'來找到差異 – jfs 2015-04-04 18:24:08
這裏是一些只有日期時間和時間作爲導入的python3代碼。 HTH
>>> from datetime import datetime
>>> import time
>>> def date2iso(thedate):
... strdate = thedate.strftime("%Y-%m-%dT%H:%M:%S")
... minute = (time.localtime().tm_gmtoff/60) % 60
... hour = ((time.localtime().tm_gmtoff/60) - minute)/60
... utcoffset = "%.2d%.2d" %(hour, minute)
... if utcoffset[0] != '-':
... utcoffset = '+' + utcoffset
... return strdate + utcoffset
...
>>> date2iso(datetime.fromtimestamp(time.time()))
'2015-04-06T23:56:30-0400'
這個工作對我來說:
if time.daylight > 0:
return time.altzone
else:
return time.timezone
它是不正確。注意:['time.localtime()。tm_isdst> 0'在我的答案中有類似的代碼](http://stackoverflow.com/a/3168394/4279) – jfs 2015-09-22 22:59:18
對不起,你的文章太長了,我完成了沒有理解,這是相同的答案。我的帖子肯定是相同解決方案的較短版本。 – Alecs 2015-09-23 11:30:51
不,代碼是錯誤的。 'time.daylight'沒有說明夏天是否現在。它說當地時間可能有DST。這就是爲什麼你必須調用'time.localtime()。tm_isdst' – jfs 2015-09-23 12:57:35
- 1. 從python的時區名稱獲取UTC偏移量
- 2. Python - 以秒爲單位獲取UTC偏移量
- 3. 如何在.NET中的DST時間獲取UTC偏移量
- 4. 如何獲得__TIME__的UTC偏移量?
- 5. 在Mac上獲取系統時區的UTC偏移量(C++)
- 6. Firebug和偏移量計算
- 7. ServiceStack.Text輸出UTC偏移量
- 8. 將元素偏移量添加到jQuery偏移量計算中
- 9. 如何在秒鐘內獲取UTC偏移量android
- 10. 在SQLite3中獲取ROWID的偏移量
- 11. 如何在Python中使用UTC偏移量解析時區?
- 12. JavaScript - 使用UTC偏移量獲取當前日期
- 13. 如何在Rails中獲得utc偏移量?
- 14. 如何計算結構的偏移量
- 15. 避免重複的偏移量計算
- 16. Flot Axes的p2c計算偏移量
- 17. 如何計算正確的偏移量?
- 18. 計算字節偏移量的問題
- 19. 如何計算scrollViewer的偏移量?
- 20. 計算Facebook封面的偏移量y
- 21. 在C++中獲取位偏移量
- 22. 帶有UTC偏移量的django DateTimeField?
- 23. 在Python中獲取特定時間和時區的偏移量
- 24. 獲取時區偏移量
- 25. Wunderground和UTC偏移
- 26. 獲得UTC從區偏移的Javascript
- 27. 獲得UTC的日期時間偏移
- 28. 從經緯度計算GMT偏移量
- 29. 爲IE正確計算偏移量?
- 30. 如何用偏移量計算XOR?
輝煌!我需要學會思考簡單:) – Paul 2010-07-02 18:24:05
這裏有一些優雅的簡單。 – 2015-03-30 03:22:45
減去它們給'TypeError:不支持的操作數類型爲 - :'time.struct_time'和'time.struct_time'。你究竟是什麼意思? – rakslice 2015-05-01 21:45:00