Django 中的时间处理
操作系统为OS X 10.9.2,Django为1.6.5.
1.时区
在setting.py文件中设置了时区
TIME_ZONE = 'Asia/Shanghai' # 设置时区为UTC+8
USE_TZ = True
Django的admin页面中显示的日期为北京时间(UTC-8):

在MySQL数据库中存储的时间为:

时间不一致的原因时:在setting.py文件中进行时区设置后,Django内部会自动把时间当成北京时间(UTC-8)对待,但MySQL数据库中还是存储为标准时区时间。
要实现的目标:查询某天的条目。
代码:
from datetime import date, timedelta
today = date.today() # 今天的日期
d = today
d2 = today+timedelta(days=1)
temp['articles'] = Article.objects.filter(timestamp__range=(d,d2))
出现报错:/Library/Python/2.7/site-packages/Django-1.6.5-py2.7.egg/django/db/models/fields/__init__.py:848: RuntimeWarning: DateTimeField Article.timestamp received a naive datetime (2014-08-04 00:00:00) while time zone support is active.(RuntimeWarning)
修改后的代码:
from django.db.models import Min
from datetime import timedelta
from django.utils import timezone
firstday = Article.objects.aggregate(Min('timestamp'))['timestamp__min']
d1 = firstday.replace(day=1,hour=0,minute=0,second=0,microsecond=0)
now = timezone.now() # 今天的日期
# 查询从本月1号到今天的条目
while(d1<now):
d2 = d1 + timedelta(days=1)
a = Article.objects.filter(timestamp__range=(d1,d2))
d1 = d2
各种时间方法获得的时间格式不同:
>>> a.timestamp # 数据库中存储的包含时区的标准时区时间
datetime.datetime(2014, 8, 7, 5, 21, 16, tzinfo=<UTC>)
>>>
>>> from datetime import date
>>> today = date.today()
>>> today
datetime.date(2014, 8, 7) # 没有包含时区信息
>>>
>>> from datetime import datetime
>>> now = datetime.now()
>>> now
datetime.datetime(2014, 8, 7, 13, 51, 20, 925928) # 没有包含时区信息,是北京时间
>>>
>>> from django.utils import timezone
>>> now = timezone.now()
>>> now
datetime.datetime(2014, 8, 7, 5, 53, 29, 798424, tzinfo=<UTC>) #包含时区信息的标准时间
>>>
>>> timezone.localtime(now)
datetime.datetime(2014, 8, 7, 13, 53, 29, 798424, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>) #将标准时间转换为北京时间
参考资料:
http://blog.xsudo.com/archives/1224.html
http://bbs.csdn.net/topics/390517579
http://blog.feshine.net/technology/1220.html
Django 中的时间处理的更多相关文章
- django中navie时间和aware时间详解
navie时间和aware时间: 什么是navie时间?什么是aware时间? navie时间:不知道自己的时间表示的是哪个时区的.也就是不知道自己几斤几两.比较幼稚. aware时间:知道自己的时间 ...
- django中navie time 和 aware time的使用和转换
在django中有关时间被分为navie time 和 aware time两种,前者指的是不带时区标记的时间格式,后者被认为是带有时区标记的时间格式.在django框架的setting.py文件中 ...
- 异步任务队列Celery在Django中的使用
前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- Mysql事务探索及其在Django中的实践(一)
前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...
- 在Django中进行注册用户的邮件确认
之前利用Flask写博客时(http://hbnnlove.sinaapp.com),我对注册模块的逻辑设计很简单,就是用户填写注册表单,然后提交,数据库会更新User表中的数据,字段主要有用户名,哈 ...
- django中request对象详解(转载)
django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. ...
- Django中如何使用django-celery完成异步任务1(转)
原文链接: http://www.weiguda.com/blog/73/ 本篇博文主要介绍在开发环境中的celery使用,请勿用于部署服务器. 许多Django应用需要执行异步任务, 以便不耽误ht ...
- Django中的Model(字段)
Model Django中的model是用来操作数据库的,Model是一个ORM框架,我们只需要关心model的操作,而不需要关心到底是哪一种数据库. 一.基本知识: 数据库引擎: Django中自带 ...
随机推荐
- NULL Pointer Dereference(转)
0x00 漏洞代码 null_dereference.c: #include <linux/init.h> #include <linux/module.h> #include ...
- C#栈Stack的使用
using System; using System.Collections.Generic; namespace CSharp栈 { class Program { static void Main ...
- ★房贷计算器 APP
一.目的 1. 这是一个蛮有用的小工具 2. 之前看了很多demo,第一次来完全的自己实现一个APP 3. 完成之后提交 App Store 4. 作为Good Coder的提交审核材料 二.排期 周 ...
- 使用Spring Cloud需要了解一些概念
Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具,它为基于JVM的微服务开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集 ...
- [LUOGU] P2679 子串
一开始用一个f数组转移,发现不太对,状态有重叠部分 f[i][j][k]表示考虑了s的前i位,匹配到t的第j位,用了k个子串,且s的第i位必选 g[i][j][k]表示考虑了s的前i位,匹配到t的第j ...
- layer的iframe层的传参和回参
从父窗口传参给iframe,参考://https://yq.aliyun.com/ziliao/133150 从iframe回参给父窗口,参考:https://www.cnblogs.com/jiqi ...
- kill, killall, pkill, xkill
1. Kill Command – Kill the process by specifying its PID All the below kill conventions will send th ...
- Python爬虫环境常用库安装
1:urllib urllib.request这两个库是python自带的库,不需要重新安装,在python中输入如下代码: import urllibimport urllib.requestres ...
- Redis数据库(一)
1. Redis简介 Redis是非关系型数据库(nosql),数据保存在内存中,安全性低,但读取速度快. Redis主要存储变化较快且数据不是特别重要的数据. Redis是一个key-value存储 ...
- tensorboard以时间命名每一个文件夹
tensorboard 有一个良好的命名习惯以时间命名每一个文件夹,例如**20190523_081232** ''' from datetiome import datetime dir = os. ...