Python timedelta
- 1 millisecond(毫秒) 转换成 1000 microseconds(微秒)
 - 1 minute 转换成 60 seconds
 - 1 hour 转换成 3600 seconds
 - 1 week转换成 7 days
 
- 0 <= microseconds < 1000000
 - 0 <= seconds < 3600*24 (the number of seconds in one day)
 - -999999999 <= days <= 999999999
 
- >>> datetime.timedelta(hours=1.232,seconds=20).microseconds
 - 200000
 - >>> datetime.timedelta(hours=1.232,seconds=20.3).microseconds
 - 500000
 
>>> datetime.timedelta(hours=1.232,seconds=20).microseconds
200000
>>> datetime.timedelta(hours=1.232,seconds=20.3).microseconds
500000
支持的操作有:
| 1 = t2 + t3 | 两个timedelta对象相加,同时满足 t1-t2 == t3 and t1-t3 == t2 为True | 
| t1 = t2 - t3 | 两个timedelta对象相减, 同时满足 t1 == t2 - t3 and t2 == t1 + t3 为True | 
| t1 = t2 * i or t1 = i * t2 | timedelta对象分别乘以i 同时满足 t1 // i == t2 为True, 且 i != 0 | 
| t1 = t2 // i | 向下取整,余数部分被丢弃 | 
| +t1 | 返回和t1相同值的timedelta对象 | 
| -t1 | 取反操作,等价于timedelta(-t1.days, -t1.seconds, -t1.microseconds)和 t1* -1 | 
| abs(t) | 绝对值,等价于: +t 当 t.days >= 0, -t 当 t.days < 0 | 
| str(t) | 返回字符串,格式为: [D day[s], ][H]H:MM:SS[.UUUUUU] | 
| repr(t) | 返回字符串,格式为: datetime.timedelta(D[, S[, U]]) | 
- >>> datetime.datetime.now()
 - datetime.datetime(2013, 5, 23, 10, 49, 27, 182057)
 - >>> datetime.datetime.now()+datetime.timedelta(2)
 - datetime.datetime(2013, 5, 25, 10, 49, 29, 385559)
 
>>> datetime.datetime.now()
datetime.datetime(2013, 5, 23, 10, 49, 27, 182057)
>>> datetime.datetime.now()+datetime.timedelta(2)
datetime.datetime(2013, 5, 25, 10, 49, 29, 385559)
- # -*- encoding=UTF-8 -*-
 - import datetime
 - def timebefore(d):
 - chunks = (
 - (60 * 60 * 24 * 365, u'年'),
 - (60 * 60 * 24 * 30, u'月'),
 - (60 * 60 * 24 * 7, u'周'),
 - (60 * 60 * 24, u'天'),
 - (60 * 60, u'小时'),
 - (60, u'分钟'),
 - )
 - #如果不是datetime类型转换后与datetime比较
 - if not isinstance(d, datetime.datetime):
 - d = datetime.datetime(d.year,d.month,d.day)
 - now = datetime.datetime.now()
 - delta = now - d
 - #忽略毫秒
 - before = delta.days * 24 * 60 * 60 + delta.seconds #python2.7直接调用 delta.total_seconds()
 - #刚刚过去的1分钟
 - if before <= 60:
 - return u'刚刚'
 - for seconds,unit in chunks:
 - count = before // seconds
 - if count != 0:
 - break
 - return unicode(count)+unit+u"前"
 
# -*- encoding=UTF-8 -*-
import datetime
def timebefore(d):
chunks = (
(60 * 60 * 24 * 365, u'年'),
(60 * 60 * 24 * 30, u'月'),
(60 * 60 * 24 * 7, u'周'),
(60 * 60 * 24, u'天'),
(60 * 60, u'小时'),
(60, u'分钟'),
)
#如果不是datetime类型转换后与datetime比较
if not isinstance(d, datetime.datetime):
d = datetime.datetime(d.year,d.month,d.day)
now = datetime.datetime.now()
delta = now - d
#忽略毫秒
before = delta.days * 24 * 60 * 60 + delta.seconds #python2.7直接调用 delta.total_seconds()
#刚刚过去的1分钟
if before <= 60:
return u'刚刚'
for seconds,unit in chunks:
count = before // seconds
if count != 0:
break
return unicode(count)+unit+u"前"
实例2:
‘’‘当前的时间上加一天或一年减一天等操作’‘’
- #!/usr/bin/env python
 - # -*- coding:utf-8 -*-
 - from datetime import datetime,timedelta
 - now = datetime.now()
 - yestoday = now - timedelta(days=1)
 - tommorow = now + timedelta(days=1)
 - next_year = now + timedelta(days = 365)
 
#!/usr/bin/env python
# -*- coding:utf-8 -*- from datetime import datetime,timedelta now = datetime.now() yestoday = now - timedelta(days=1)
tommorow = now + timedelta(days=1) next_year = now + timedelta(days = 365)
Python timedelta的更多相关文章
- Python timedelta模块 时间增减用法
		
timedalte 是datetime中的一个对象,该对象表示两个时间的差值 构造函数:datetime.timedelta(days=0, seconds=0, microseconds=0, mi ...
 - Python Web框架篇:Django Form组件
		
Form简介 在HTTP中,表单(form标签),是用来提交数据的,其action属性说明了其传输数据的方法:如何传.如何接收. 访问网站时,表单可以实现客户端与服务器之间的通信.例如查询,就用到了表 ...
 - 我使用celery以及docker部署遇到的问题
		
首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...
 - 按字母顺序排序的 arcpy.mapping 类列表
		
arcpy.mapping 类可使用地图文档 (.mxd) 或图层文件 (.lyr) 中的不同对象类型的各种方法和属性.此文档可专门用作快速参考.有关详细信息,请使用链接跳转至各帮助页面. arcpy ...
 - Redis命令参考(Keys & String)
		
r = redis.Redis(ip, port, index) 如此实例化一个redis对象,index取值0-15,一个redis对象有16个库. Keys 函数 功能 返回值 备注 keys(s ...
 - Django ORM 知识概要
		
相关命令 python3 manage.py makemigrations 根据模型生成相关迁移文件 python3 manage.py migrate 根据迁移文件,将表结构更新到数据库中,并在Dj ...
 - 13.Django1.11.6文档
		
第一步 入门 检查版本 python -m django --version 创建第一个项目 django-admin startproject mysite 运行 python manage.py ...
 - Django学习笔记(6)——Form表单
		
知识储备:HTML表单form学习 表单,在前端页面中属于最常见的一个东西了.基本上网站信息的提交都用到了表单,所以下面来学习Django中优雅的表单系统:Form 表单的主要作用是在网页上提供一个图 ...
 - Django表单字段汇总
		
Field.clean(value)[source] 虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来使用,以便更好地了解它们是如何工作的.每个Field的实例都有一个cle ...
 
随机推荐
- C#中【正则表达式regular expression】相关的知识
			
Regex System.Text.RegularExpressions.Regex regex应该是regular expression的缩写 https://msdn.microsoft ...
 - 【bzoj4423】[AMPPZ2013]Bytehattan(平面图转对偶图+并查集)
			
题目传送门:bzoj4423 如果是普通的删边判连通性,我们可以很显然的想到把操作离线下来,倒着加边.然而,这题强 制 在 线. 虽然如此,但是题目所给的图是个平面图.那么我们把它转成对偶图试试看? ...
 - Protocol Buffers数据传输及存储协议简单使用
			
我们知道Protocol Buffers是Google定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据 ...
 - 【cs231n】神经网络学习笔记3
			
+ mu) * v # 位置更新变了形式 对于NAG(Nesterov's Accelerated Momentum)的来源和数学公式推导,我们推荐以下的拓展阅读: Yoshua Bengio的Adv ...
 - Java高级面试题
			
一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问Co ...
 - JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果
			
Ace模板地址:http://code.google.com/p/ace-engine/wiki/AceTemplate(有时会打不开) Ace英文官网:http://wrapbootstrap.co ...
 - Nginx、Apache工作原理及Nginx为何比Apache高效
			
Nginx才短短几年,就拿下了web服务器大笔江山,众所周知,Nginx在处理大并发静态请求方面,效率明显高于httpd,甚至能轻松解决C10K问题. 在高并发连接的情况下,Nginx是Apache服 ...
 - iOS-如何写好一个UITableView
			
如何写好一个UITableView 字数5787 阅读3745 评论25 喜欢69 本文是直播分享的简单文字整理,直播共分为上.下两部分.第一部分:优酷 Or YouTube,第二部分:优酷 Demo ...
 - Sum All Numbers in a Range
			
我们会传递给你一个包含两个数字的数组.返回这两个数字和它们之间所有数字的和. 最小的数字并非总在最前面. 这是一些对你有帮助的资源: Math.max() Math.min() Array.reduc ...
 - 021——VUE中变异方法 push/unshift pop/shift
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...