# 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-区分时区的时间类型的更多相关文章

  1. KingbaseES 时间类型数据和oracle时间类型的区别

    Oracle日期时间类型有两类,一类是日期时间类型,包括Date, Timestamp with time zone, Timestamp with local time zone.另一类是Inter ...

  2. c++ 时间类型详解 time_t

    Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00 ...

  3. MySQL数据类型--日期和时间类型

    MySQL中的多种时间和格式数据类型 日期和时间类型是为了方便在数据库中存储日期和时间而设计的.MySQL中有多种表示日期和时间的数据类型. 其中,year类型表示时间,date类型表示日期,time ...

  4. C++时间类型详解( time_t 和 tm )

    原文:http://blog.csdn.net/love_gaohz/article/details/6637625 Unix时间戳(Unix timestamp),或称Unix时间(Unix tim ...

  5. 一篇文章解决django中时区问题

    首先要明确的是,当在Django项目的setting.py文件中设置了USE_TZ=True时,我们给定的时间存储到数据库的时候都会变成UTC时间(使用auto_now_add和auto_now为Tr ...

  6. oracle之时间类型

    Oracle 时间类型及Timezone 20.1 Oracle的六种时间类型 DATETIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TI ...

  7. Mysql时间类型处理

    关于Mysql中时间的处理 最近在读<人类简史>,读第二遍.只有晚上睡觉之前读一点点,有时候觉得一天可以抽出一个专门的时间来看书了,效率应该能高不少. 另外分享个网址可以随心创作 这里有一 ...

  8. PHPExcel对于Excel中日期和时间类型的处理

    PHPExcel是一款优秀的处理Excel文件读写的开源PHP Library,能够给我们提供强大的Excel读写能力,本文针对Excel处理过程中关于日期和时间类型的处理进行深入的讨论.PHPExc ...

  9. SQL Server的日期和时间类型

    Sql Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1,秒的精度是指使用多少位小数表示秒 DateTime数据类型秒的精度是3,D ...

随机推荐

  1. 【机器学习算法】bagging算法

    参考 1.AdaBoost从原理到实现: 完

  2. liunx服务程序的安装及配置

    1.系统运行级别:

  3. HDU 1233:还是畅通工程(最小生成树)

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  4. hdu1224 dp(dp + 栈/父亲数组记录路径)

    题意:给定 n 个城市的有趣度,并给出可以从那些城市飞到那些城市.其中第一个城市即起始城市同样也作为终点城市,有趣度为 0,旅行途中只允许按有趣度从低到高旅行,问旅行的有趣度最大是多少,并输出旅行路径 ...

  5. (转)Linux 定时关机、休眠命令

    立刻关机:sudo haltsudo init 0 sudo shutdown -h nowsudo shutdown -h 0....定时/延时关机:sudo shutdown -h 19:3019 ...

  6. Python编码——常见的编码设置

    1.查看自己电脑的python的编码设置 # -*- coding: utf8 -*- import sys, locale """ locale.getpreferre ...

  7. oracle 与sql serve 获取随机行数的数据

    Oracle 随机获取N条数据    当我们获取数据时,可能会有这样的需求,即每次从表中获取数据时,是随机获取一定的记录,而不是每次都获取一样的数据,这时我们可以采取Oracle内部一些函数,来达到这 ...

  8. PHP 中的对象传递

    <?php class A { public $age = 0; public $username = ""; public $obj = null; } $a = new ...

  9. JS 响应式布局

    1.media 效果为屏幕宽度变化时,背景颜色也变化 <!DOCTYPE html> <html lang="en"> <head> <m ...

  10. JZ2440 裸机驱动 第13章 LCD控制器(2)

    13.2 TFT LCD显示实例 13.2.1 程序设计     本实例的目的是从串口输出一个菜单,从中选择各种方法进行测试,比如画线. 画圆.显示单色.使用调色板等. 13.2.2代码详解     ...