日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Python?如何修改程序默認時區(qū)_python

作者:貓大叔 ? 更新時間: 2022-11-18 編程語言

如何修改程序默認時區(qū)

由于系統(tǒng)安裝時時區(qū)可能選擇不對,并不是中國的東八區(qū),導(dǎo)致依賴于日期時間函數(shù)無法正常使用

找到一個比較簡單的方法

程序啟動時加一行代碼即可

os.environ['TZ'] = 'Asia/Shanghai'

關(guān)于datetime時區(qū)問題

使用阿里云函數(shù)計算功能,基于python3構(gòu)建函數(shù),在本機通過datetime.now獲取當(dāng)前時間與數(shù)據(jù)庫存儲時間對比,獲取時間差,可正常運行。

上傳到阿里云后運行錯誤,后檢測發(fā)現(xiàn)阿里云服務(wù)器默認時間為utc時間。解決方法如下。

解決方案

第三方模塊

pytz可以很方便的修改時區(qū),但是需要再引入一個模塊,所以沒用這個。

import pytz
import datetime
tz = pytz.timezone('Asia/Shanghai')
datetime.datetime.now(tz)#獲得此時區(qū)的當(dāng)期那時間
#可以通過pytz.timezone('cn')獲取中國的所有可用的時區(qū)
#['Asia/Shanghai', 'Asia/Harbin', 'Asia/Chongqing', 'Asia/Urumqi', 'Asia/Kashgar']

直接修改時區(qū)

下面轉(zhuǎn)子

# 拿到UTC時間,并強制設(shè)置時區(qū)為UTC+0:00:
>>> utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
>>> print(utc_dt)
2015-05-18 09:05:12.377316+00:00
# astimezone()將轉(zhuǎn)換時區(qū)為北京時間:
>>> bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))
>>> print(bj_dt)
2015-05-18 17:05:12.377316+08:00
# astimezone()將轉(zhuǎn)換時區(qū)為東京時間:
>>> tokyo_dt = utc_dt.astimezone(timezone(timedelta(hours=9)))
>>> print(tokyo_dt)
2015-05-18 18:05:12.377316+09:00
# astimezone()將bj_dt轉(zhuǎn)換時區(qū)為東京時間:
>>> tokyo_dt2 = bj_dt.astimezone(timezone(timedelta(hours=9)))
>>> print(tokyo_dt2)
2015-05-18 18:05:12.377316+09:00

此方法直接獲取很容易,包括使用pytz,但是這樣獲取到的dt類型都是帶時區(qū)類型,此時直接和sql獲取到的時間比較會出現(xiàn)“帶時區(qū)與不帶時區(qū)類型不可轉(zhuǎn)換”的錯誤

直接加減

utc_dt = datetime.utcnow()
bj_dt = utc_dt+timedelta(hours=8)
delta_dt = bj_dt - sql_dt

此方案要求sql的計時時區(qū)要固定

原文鏈接:https://wiker.blog.csdn.net/article/details/88958448

欄目分類
最近更新