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中自带 ...
随机推荐
- selenium-元素的定位
前戏 元素的定位是自动化测试的核心,要想操作一个元素,首先应该识别这个元素.Webdriver 提供了一系列的元素定位方法,常用的有 id,name,class name,link text,part ...
- 分享一个Delphi跨平台Http库的封装,一个Delphi跨平台TCP库的封装
{ 单元名:跨平台的TCP客户端库封装 作者:5bug 网站:http://www.5bug.wang } unit uCPTcpClient; interface uses System.Class ...
- quartz测试类
package demo.mytest; import java.text.ParseException; import org.quartz.CronTrigger;import org.quart ...
- ccf_201712-2
题目 问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1 ...
- Tcp 三次握手 四次分手
看了 余晟以为的 “tcp没那么难吧”,算是对三次握手,四次分手有了一点点理解,记录下来以方便自己以后的查看. 原文链接:https://mp.weixin.qq.com/s?__biz=MzA3MD ...
- (8)zabbix监控项item是什么
什么是item Items是从主机里面获取的所有数据.通常情况下我叫itme为监控项,例如服务器加入了zabbix监控,我需要监控它的cpu负载,那么实现这个方法的东西就叫item item构成 it ...
- js中小数精度问题
js中小数的取值为近似值,可能比实际值大,也可能比实际值小,进行“四舍五入”得到的 例如:alert(0.1+0.2);值为0.300000004 alert(0.2+0.7);值为1.899 ...
- Python9-封装-day26(大年初三)
class Room: def __init__(self,name,length,width): self.__name = name self.__length = length self.__w ...
- (转)iOS开发之Pch预编译文件的创建
本文转自 http://www.cnblogs.com/496668219long/p/4568265.html 在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹 ...
- PAT Basic 1052
1052 卖个萌 萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请 ...