django时区相关说明
# naive time
从字面意思上理解,这是个"幼稚的时间",所以可以理解为它是个本地时间,不带时区信息,不能直接用于存储,如下
import datetime
datetime.datetime.now() # 本地时间,不带时区
datetime.datetime.utcnow() # utc时间,不带时区
"""不带时区的naive time
2022-02-09 11:20:22.074294
2022-02-09 03:27:57.935250
"""
# active time
从字面意思上理解,这是个"清醒的时间",所以可以理解为带时区的时间,那么这个"active time"就是我们需要的datetime类型,只要给他正确的时区,存进数据库,那么你的网站的时间就永远不会有问题了,服务器日志也不会再有让你内心奔溃的东西出现了。
对于每一个"naive time"我们只需要给它一个正确的tzinfo它就可以被正常使用了,那么这个tzinfo从哪里来呢?在安装django的时候它会检测你有没有安装pytz这个库,如果没有它会自动帮你装上。
简单点说就是一个python的时区管理包,那么以后只要我们每次涉及到时间操作时都这样写
from pytz import timezone
import datetime
my_zone = timezone("Asia/Shanghai")
my_time = datetime.datetime.now().replace(tzinfo=my_zone)
# 如在django项目中,推荐使用下面的,底层也是pytz实现的
from django.utils import timezone
# django项目中有相关时间问题的话推荐使用
form django.utils import timezone
timezone.now() # 带时区的
# 如何读取datetime并正确显示
## 当存进的datetime时间和它的时区与你所在的时间不对应时的解决办法
1.datetime.astimezone()
2.django.utils.timezone.localtime()
以上两种方法都可以将一个时间转换为另一个时区时间,而2中默认转换为django setting里的时区,当然你也可以指定时区转换。
import datetime
from pytz import timezone
utc_zone = timezone("utc")
my_zone = timezone("Asia/Shanghai")
my_time = datetime.datetime.utcnow().replace(tzinfo=utc_zone)
out_time = my_time.astimezone(my_zone)
print(out_time.strftime("%Y-%m-%d %H:%M:%S"))
# 一些django中timezone的方法
timezone.localtime() # 将一个其它时区的"active time"转换为本地时间,当然这个本地时间依然是有时区的,不是"naive"的,你也可以指定一个timezone让localtime将"active time"转换为其它时区的time
timezone.now() # 可以根据setting中USE_TZ返回一个有(无)时区的datetime.
timezone.is_aware() # 判断一个datetime是否是"active"
timezone.is_naive() # 判断一个datetime是否是"naive"
timezone.make_aware() # 将naive time转换为active time
timezone.make_naive() # 将active time 转换为naive time
https://blog.csdn.net/ronon77/article/details/84884106
https://cloud.tencent.com/developer/article/1028182?from=15425
django时区相关说明的更多相关文章
- django 时区和系统(ubuntu)时区修改
django时区默认使用UTC,中国人使用CST东八区. settings.py改为上海时区 #settings.py TIME_ZONE = 'Asia/Shanghai' # True:使用UTC ...
- django时区设置 media配置 日期截断函数 上传图片管理设计方案
1.django时区 修改一下app里的设置 TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True # 不用UTC时间 USE_TZ ...
- Django 模板相关
Django 模板相关 视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面.目前市面上有非常多的模板系统,其中最 ...
- django时区设置(timezone)
django时区设置(timezone): 默认: TIMEZONE:'America/Chicago'(以前的版本,现在的版本默认的都是UTC时间.) Chicago时间,为UTC/GMT -6 小 ...
- .Net DateTime跨时区相关问题
项目:.Net CS结构,WCF通信,MySql存储. 场景:客户端(UTC+07:00)获取本地时间(DateTime对象)2017-01-17 15:20:12,通过WCF(http)传输至服务端 ...
- 一文解决MySQL时区相关问题
前言: 在使用MySQL的过程中,你可能会遇到时区相关问题,比如说时间显示错误.时区不是东八区.程序取得的时间和数据库存储的时间不一致等等问题.其实,这些问题都与数据库时区设置有关,本篇文章将从数据库 ...
- Django学习笔记之Django ORM相关操作
一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...
- Django ORM相关的一些操作
一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 ...
- Django 开发相关知识 整理
前言 前端ajax HTTP请求头 ajax上传文件 jsonp跨域 URL 设计 分发 url参数编码 反向生成url 视图 request对象 POST url信息 视图返回值 HttpRespo ...
- django 一些相关问题
这两天在处理django项目时碰到一些问题 1.ur路径设置要忽略大小写,查找了很多资料,都没有发现相关的介绍,最后在谷歌上找到一个解决方案,https://groups.google.com/for ...
随机推荐
- SignalR系列文章01---MVC项目中创建demo
1. 新建mvc项目,引入指定的nuget包 2. 新增加一个集成器类添加如下的代码 /// <summary> /// 供客户端调用的服务器端代码 /// </summary& ...
- 消息队列RabbitMQ教程
RabbitMQ教程 翻译自RabbitMQ Tutorials. 0. 准备 前期准备 1. Hello World 最简入门教程 2. 工作队列 竞争消费者模式 3. 发布/订阅 同时发送消息给多 ...
- 从零开始配置vim(25)——关于 c++ python 的配置
从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿.一时之间无暇顾及该系列教程的更新.等我回来的时候发现很多小伙伴私信我催更.在这里向支持本人这一拙劣教程的各位小伙伴表示真 ...
- 1.2 w字+!Java IO 基础知识系统总结 | JavaGuide
首发于:JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识.) 原文地址:https://javaguide.cn/java/io/io-basis.h ...
- 深入浅出Java多线程(一):进程与线程
引言 大家好,我是你们的老伙计秀才. 在计算机系统的发展历程中,早期的计算机操作模式十分单一和低效.用户只能逐条输入指令,而计算机则按照接收指令的顺序逐一执行,一旦用户停止输入或进行思考,计算机会处于 ...
- 手撕Udp套接字|实现群聊通信|实现Windows & Linux通信交互
专栏和Git地址 操作系统https://blog.csdn.net/yu_cblog/category_12165502.html?spm=1001.2014.3001.5482UdpSocke ...
- Python-字符串format方法指定参数
一.字符串的format方法有几种指定参数的方式:(1)按照位置传参(默认方式),传入的参数与{}一一对应(2)关键字传参,关键字(keyword)传递是根据每个参数的名字传递参数.关键字并不用遵守位 ...
- 【LGR-153-Div.2】梦熊联盟 8 月月赛 Ⅳ & Cfz Round 1 & 飞熊杯 #1
[LGR-153-Div.2]梦熊联盟 8 月月赛 Ⅳ & Cfz Round 1 & 飞熊杯 #1 \(T1\) luogu P9577 「Cfz Round 1」Dead Cell ...
- CF1822F Gardening Friends
题目链接 题解 知识点:树的直径,枚举. 考虑一个结论:树上任意点的最远点一定是树的直径的端点. 那么对于一个根节点,只要知道了树的直径,那么我们就可以立即得到最远距离,即乘 \(k\) 树的价值. ...
- PCIE分层结构
PCIe分层结构 绝大多数的总线或者接口,都是采用分层实现的.PCIe也不例外,它的层次结构如下: PCIe定义了下三层(彩色部分):事务层(Transaction Layer),数据链路层(Data ...