django-区分时区的时间类型
# aware time:清醒的时间(清醒的知道自己这个时间代表的是哪个时区的)
# navie time:幼稚的时间(不知道自己的时间代表的是哪个时区)
在settings.py中设置
LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Asia/Shanghai' # need1 USE_I18N = True USE_L10N = True USE_TZ = True # 设置为aware time ps:清醒的时间,自动区分时区 need2
#### 使用aware time 进行计算操作。出现的错误
can't subtract offset-naive and offset-aware datetimes 因为在django中使用的是aware time,而通过datetime.now()获取当前时间是 navie time类型, 解决办法:使用django提供的获取当前aware time类型的时间
from django.utils.timezone import now
# -*- coding: utf-8 -*-
from datetime import datetime
from django import template
from django.utils.timezone import now register = template.Library() @register.filter
def time_since(value):
"""
time距离现在的时间间隔
1.如果时间间隔小于1分钟以内,那么就显示“刚刚”
2.如果是大于1分钟小于1小时,那么就显示“xx分钟前”
3.如果是大于1小时小于24小时,那么就显示“xx小时前”
4.如果是大于24小时小于30天以内,那么就显示“xx天前”
5.否则就是显示具体的时间
2017/10/20 16:15
"""
print(value) # aware time类型
if not isinstance(value, datetime):
return value
# now_time = datetime.now() # navie time类型
now_time = now() # django内置的获取当前aware time类型
timestamp = (now_time - value).total_seconds() # 将datatime类型转化成秒
if timestamp < 60:
return '刚刚'
elif timestamp <= 60 * 60:
return "%s分钟前" % (int(timestamp / 60)) # 转成整数
elif timestamp <= 60 * 60 * 24:
return "%s小时前" % (int(timestamp / (60 * 60)))
elif timestamp <= 60 * 60 * 24 * 30:
return "%s天前" % (int(timestamp / (60 * 60 * 24)))
return value.strftime('%Y/%m/%d %H:%M')
django-区分时区的时间类型的更多相关文章
- KingbaseES 时间类型数据和oracle时间类型的区别
Oracle日期时间类型有两类,一类是日期时间类型,包括Date, Timestamp with time zone, Timestamp with local time zone.另一类是Inter ...
- c++ 时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00 ...
- MySQL数据类型--日期和时间类型
MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...
- C++时间类型详解( time_t 和 tm )
原文:http://blog.csdn.net/love_gaohz/article/details/6637625 Unix时间戳(Unix timestamp),或称Unix时间(Unix tim ...
- 一篇文章解决django中时区问题
首先要明确的是,当在Django项目的setting.py文件中设置了USE_TZ=True时,我们给定的时间存储到数据库的时候都会变成UTC时间(使用auto_now_add和auto_now为Tr ...
- oracle之时间类型
Oracle 时间类型及Timezone 20.1 Oracle的六种时间类型 DATETIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TI ...
- Mysql时间类型处理
关于Mysql中时间的处理 最近在读<人类简史>,读第二遍.只有晚上睡觉之前读一点点,有时候觉得一天可以抽出一个专门的时间来看书了,效率应该能高不少. 另外分享个网址可以随心创作 这里有一 ...
- PHPExcel对于Excel中日期和时间类型的处理
PHPExcel是一款优秀的处理Excel文件读写的开源PHP Library,能够给我们提供强大的Excel读写能力,本文针对Excel处理过程中关于日期和时间类型的处理进行深入的讨论.PHPExc ...
- SQL Server的日期和时间类型
Sql Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1,秒的精度是指使用多少位小数表示秒 DateTime数据类型秒的精度是3,D ...
随机推荐
- maven quick start
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-a ...
- (8)propetry装饰器
propetry是一个内置函数,用来将一个功能伪装成一个数据属性 property将一个方法伪装成一个数据属性class People: def __init__(self,name,height,w ...
- 《DSP using MATLAB》Problem 3.9
利用的频移性质为: 本习题代码: %% ------------------------------------------------------------------------ %% Outp ...
- ppt罗列项排版
关于罗列项的排版(1,....2,......3,......4,........)
- mysql升级到5.6源
###更新mysql的yum源wget http://dev.mysql.com/get/mysql-community-release-el6-4.noarch.rpm### 安装新的mysql源y ...
- WPF控件NumericUpDown (转)
WPF控件NumericUpDown示例 (转载请注明出处) 工具:Expression Blend 2 + Visual Studio 2008 语言:C# 框架:.Net Framework 3. ...
- 序列化效率比拼——谁是最后的赢家avaScriptSerializer方式、DataContract方式、Newtonsoft.Json
前言:作为开发人员,对象的序列化恐怕难以避免.楼主也是很早以前就接触过序列化,可是理解都不太深刻,对于用哪种方式去做序列化更是随波逐流——项目中原来用的什么方式照着用就好了.可是这么多年自己对于这东西 ...
- Javascript 正则验证带 + 号的邮箱地址
很多邮箱地址是可以加上 + 加号为同一个邮箱地址. 比如 Gmail. 如果需要验证带 + 号的邮箱,如下: str = "65485+55@gmail.com"; documen ...
- 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)
原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年 ...
- HTTP协议中的长连接、短连接、长轮询、短轮询
长连接.短连接,指的是TCP连接.长连接是为了复用TCP连接. 长轮询中,服务器如果检测到库存量没有变化的话,将会把当前请求挂起一段时间(这个时间也叫作超时时间,一般是几十秒).在这个时间里,服务器会 ...