最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django時區(qū)問題的處理(USE_TZ)

 更新時間:2025年12月31日 09:01:54   作者:StanwenRen  
Django時區(qū)管理指南:理解USE_TZ=True的重要性,如何開啟時區(qū)支持,以及如何在代碼中正確使用datetime和timezone

一:Django出現(xiàn)的時間問題

問題描述:

不同時區(qū)的人所在的時間是不同的,如果都采用當?shù)貢r間,那么導致數(shù)據(jù)庫存儲的時間,并不是同一時刻的時間。但如果都采用0時區(qū)時間,那么不在0時區(qū)的用戶就會看到錯誤的時間,怎么做呢?

解決方案:

在代碼和數(shù)據(jù)庫中都采用UTC時間(0時區(qū)時間),在和用戶交互的時候采用當?shù)貢r間。

二:Django如何開啟時區(qū)支持?

1: 在配置文件中配置:

USE_TZ = True

2: 配置文件指定自己所在的時間戳(不指定默認是0時區(qū))

LANGUAGE_CODE = 'zh-hans' # 語言:簡體中文

TIME_ZONE = 'Asia/Shanghai' # 亞洲上海

3: 安裝pytz模塊:(時區(qū)轉(zhuǎn)換專用模塊)

pip install pytz -i https://pypi.tuna.tsinghua.edu.cn/simple

三:USe_TZ = True的效應(yīng)

  • 作用一:前端傳遞過來的DateFiled類型,經(jīng)過模型類,存到數(shù)據(jù)庫中,全部是0時區(qū)時間。
  • 作用二: 后端自己寫的代碼,只要是使用timezone獲取的時間(已知的時間)(帶時區(qū)的時間),django會自己轉(zhuǎn)換,無需我們手動轉(zhuǎn)換。
  • 作用三:模板顯示問題:django模板,會將數(shù)據(jù)庫中0時區(qū)的時間轉(zhuǎn)換成當?shù)貢r間,無需我們自己轉(zhuǎn)換。

總結(jié):

  • 1:django中推薦使用USE_TZ = True,讓數(shù)據(jù)庫存儲0時區(qū)時間。
  • 2:django后端使用timezone獲取當?shù)貢r間,不使用原生的datetime。
  • 3:django模板無需考慮時區(qū)問題,django將自動轉(zhuǎn)換。
  • 4:USE_TZ = True,和 TIME_ZONE = ‘Asia/Shanghai’ # 亞洲上海必須設(shè)置。

四:了解django的配置文件

1:如果在沒有django項目的情況下,django使用的自己的配置文件。

python3.5.2/site_packages/django/conf/global_settings

在django項目的依賴包中尋找到。

2: django項目下,django啟動的是

項目中的settings文件

五:區(qū)分兩類datetime對象

  • 時區(qū)關(guān)閉時,django使用原生的datetime對象保存本地時間。
  • 時區(qū)開啟時,django使用已知的datetime對象保存本地時間。

驗證:時區(qū)關(guān)閉時:django使用的timezone

注意:此時使用的是global_settings配置文件,不存在USE_TZ = True這個配置項。

python@ubuntu:~$ workon django_env
(django_env) python@ubuntu:~$ python3
>>> from django.conf import settings 
>>> settings.configure()
>>> from django.utils import timezone
>>> now = timezone.now()
>>> now
datetime.datetime(2020, 10, 27, 21, 34, 48, 517250)

結(jié)論:

當關(guān)閉時區(qū)時,django 使用原生的 datetime 對象保存本地時間。

驗證:時區(qū)開啟時:django使用的timezone

注意:

此時我們進入django項目中使用python3 manager.py shell進入django環(huán)境:

(django_env) python@ubuntu:~/Desktop/shopping-mall-project/shopping_mall$ python3 manage.py shell
>>> from django.utils import timezone
>>> now = timezone.now()
>>> now
datetime.datetime(2020, 10, 27, 13, 40, 35, 544740, tzinfo=<UTC>)
>>> new = timezone.localtime()
>>> new
datetime.datetime(2020, 10, 28, 8, 24, 1, 906910, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)

結(jié)論:

時區(qū)開啟時,django使用已知的datetime對象保存本地時間。

使用localtime獲取的是本地東八區(qū)的時間。(注意:,TIME_ZONE = ‘Asia/Shanghai’, 這個配置項必須存在才可以)。

六:datetime模塊中的類

  • date類: 日期對象(年,月,日)
  • time類:時間對象(時,分, 秒,微秒)
  • datetime類:日期時間對象 (年,月,日,時,分,秒,微秒)
  • timedelta類:時間間隔對象
  • tzinfo類:時區(qū)信息對象。

七:datetime的常見用法

注意: 由于timezone返回的對象也是datetime對象,所以方法同樣試用。

  • 1:獲取當?shù)厥菚r間(年,月,日,時,分,秒,微秒):
>>> datetime.datetime.now()
datetime.datetime(2020, 10, 28, 8, 34, 56, 588940)
>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2020, 10, 28, 8, 50, 34, 43761)
  • 2:將時間轉(zhuǎn)換成(時,分,秒,微秒)
>>> new_time = datetime.datetime.now()
>>> new_time.time()
datetime.time(8, 38, 24, 280548)
  • 3:將時間轉(zhuǎn)換成(年,月,日)
>>> now_time = datetime.datetime.now()
>>> now_time.date()
datetime.date(2020, 10, 28)
  • 4:時間的加減計算:
# 時間點-時間間隔 = 時間點
>>> import datetime
>>> now_time = datetime.datetime.now()
>>> now_time
datetime.datetime(2020, 10, 28, 8, 47, 30, 232944)
>>> day_3_ago = now_time - datetime.timedelta(days = 3)
>>> day_3_ago
datetime.datetime(2020, 10, 25, 8, 47, 30, 232944)
  • 5:格式化日期轉(zhuǎn)換成datetime對象:
>>> datetime.datetime.strptime('2017-3-22 15:25','%Y-%m-%d %H:%M')
datetime.datetime(2017, 3, 22, 15, 25)

八:date的常用用法

  • 1: date對象獲取年月日:
>>> date_today = datetime.date.today()
>>> date_today
datetime.date(2020, 10, 28)
>>> date_today.year
2020
>>> date_today.month
10
>>> date_today.day
28
  • 2:日期比較大小
>>> a = datetime.date(2020, 10, 28)
>>> b = datetime.date(2020, 10, 27)
>>> a.__eq__(b)  # 相等
False
>>> a.__gt__(b)  # 大于
True
>>> a.__lt__(b)   # 小于
False
>>> a.__le__(b)  # 小于等于
False
>>> a.__lt__(b)   # 大于等于
False
>>> a.__ne__(b)   # 不等于
True
  • 3:replace替換:
>>> today_date = datetime.date.today()
>>> today_date
datetime.date(2020, 10, 28)
>>> today_date = today_date.replace(year = today_date.year, month = today_date.month, day = 3)
>>> today_date
datetime.date(2020, 10, 3)

九:Django的時區(qū)轉(zhuǎn)換

1:astimezone的使用:將一個時間對象(datetime)轉(zhuǎn)換成UTC時間對象(datetime)

import datetime
import pytz
utc = pytz.timezone('UTC')
now_time = datetime.datetime.now()
utc_time = now_time.astimezone(tz=utc)
print(now_time,utc_time)

2:pytz.timezone(‘時區(qū)名’):此方法能獲取一個tzinfo對象,該對象可在datetime生成時間中以參數(shù)的形式放入,即可生成對應(yīng)時區(qū)的時間。

>>>utc = pytz.timezone('UTC')
>>>datetime.datetime.now(tz=utc)
2019-05-10 10:53:46.000929+00:00

實際的時間是:18:53:46

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Python編寫一個PDF轉(zhuǎn)換工具箱

    基于Python編寫一個PDF轉(zhuǎn)換工具箱

    這篇文章主要為大家詳細介紹了如何使用Python編寫一個PDF轉(zhuǎn)換工具箱,可以實現(xiàn)PDF轉(zhuǎn)圖片,word,拆分,刪除,提取等功能,感興趣的可以了解下
    2024-12-12
  • Python類的繼承和多態(tài)代碼詳解

    Python類的繼承和多態(tài)代碼詳解

    這篇文章主要介紹了Python類的繼承和多態(tài)代碼詳解,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • python之PyQt按鈕右鍵菜單功能的實現(xiàn)代碼

    python之PyQt按鈕右鍵菜單功能的實現(xiàn)代碼

    這篇文章主要介紹了python PyQt按鈕右鍵菜單功能的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Python和Anaconda和Pycharm安裝教程圖文詳解

    Python和Anaconda和Pycharm安裝教程圖文詳解

    PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要介紹了Python和Anaconda和Pycharm安裝教程,需要的朋友可以參考下
    2020-02-02
  • 如何使用Python讀取.xlsx指定行列

    如何使用Python讀取.xlsx指定行列

    讀取xlsx的整列數(shù)據(jù)很容易,但是要讀取指定sheet的指定列,這個相信大多數(shù)程序員都不會,下面這篇文章主要給大家介紹了關(guān)于如何使用Python讀取.xlsx指定行列的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 利用python解決mysql視圖導入導出依賴的問題

    利用python解決mysql視圖導入導出依賴的問題

    這篇文章主要給大家介紹了關(guān)于利用python解決mysql視圖導入導出依賴的問題,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • Python 3.x基礎(chǔ)實戰(zhàn)檢查磁盤可用空間

    Python 3.x基礎(chǔ)實戰(zhàn)檢查磁盤可用空間

    這篇文章主要為大家介紹了Python 3.x基礎(chǔ)實戰(zhàn)之檢查磁盤可用空間實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Python利用SMTP發(fā)送郵件的常見問題與解決方案詳解

    Python利用SMTP發(fā)送郵件的常見問題與解決方案詳解

    在自動化辦公和系統(tǒng)開發(fā)中,郵件發(fā)送功能是常見的需求,本文將從實際案例出發(fā),分析常見的SMTP錯誤,并提供完整的解決方案,希望對大家有一定的幫助
    2025-04-04
  • 使用Keras中的ImageDataGenerator進行批次讀圖方式

    使用Keras中的ImageDataGenerator進行批次讀圖方式

    這篇文章主要介紹了使用Keras中的ImageDataGenerator進行批次讀圖方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python獲取apk文件URL地址實例

    Python獲取apk文件URL地址實例

    需要提取apk文件的特定URL地址的朋友可以看一下這個代碼實例。
    2013-11-11

最新評論

桃园市| 旺苍县| 汉寿县| 和龙市| 南投县| 原平市| 密山市| 合江县| 建昌县| 青州市| 江安县| 交城县| 桂阳县| 泽州县| 商南县| 巴林左旗| 怀柔区| 华亭县| 尉氏县| 修武县| 白山市| 济宁市| 巴东县| 寿光市| 枣强县| 紫金县| 丽江市| 新昌县| 天长市| 罗平县| 东海县| 杨浦区| 大理市| 郎溪县| 鄢陵县| 平山县| 南丹县| 永平县| 微山县| 抚宁县| 铜梁县|