Python踩坑之路-datetime模块的timedelta应用
来源:互联网 发布:移动有网络机顶盒吗 编辑:程序博客网 时间:2024/05/20 06:55
最近由于公司前端任务不多,所以参与下后端python的开发。发现这个挺实用的时间计算api–timedelta,感觉以后会经常用到,在此记录一下以便后续温习。
业务需求上经常要算到多久时间后,如果是一两个小时,可以自己通过写判断语句,原时间加上相差的几个小时,多的就天数加一。但是如果是100个小时,100天呢?或者300天前是几月几号?
这里引入datetime模块中的timedelta,构造函数
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
timedelta对象可以理解为时间差,通过构造函数的传参,把100小时、100天转换成可以让datetime或者date直接加减的时间差。其中取值范围如下:
0 <= microseconds < 1000000 0 <= seconds < 3600*24 (the number of seconds in one day)-999999999 <= days <= 999999999
举个实例计算100天后:
now = datetime.now()day_difference = timedelta(days=100)now = now + day_difference print now.strftime('%Y-%m-%d')
稍作修改写成工具类(这里偷懒引用下同事写的工具类):
def timedelta(sign, dt, value): """ 对指定时间进行加减运算,几秒、几分、几小时、几日、几周、几月、几年 sign: y = 年, m = 月, w = 周, d = 日, h = 时, n = 分钟, s = 秒 dt: 日期,只能是datetime或datetime.date类型 value: 加减的数值 return: 返回运算后的datetime类型值 """ if not isinstance(dt, datetime.datetime) and not isinstance(dt, datetime.date): raise Exception("日期类型错误") if sign == 'y': year = dt.year + value if isinstance(dt, datetime.date): return datetime.datetime(year, dt.month, dt.day) elif isinstance(dt, datetime.datetime): return datetime.datetime(year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond) else: return None elif sign == 'm': year = dt.year month = dt.month + value ### 如果月份加减后超出范围,则需要计算一下,对年份进行处理 ### # 如果月份加减后等于0时,需要特殊处理一下 if month == 0: year = year - 1 month = 12 else: # 对年月进行处理 year = year + month // 12 month = month % 12 if isinstance(dt, datetime.date): return datetime.datetime(year, month, dt.day) elif isinstance(dt, datetime.datetime): return datetime.datetime(year, month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond) else: return None elif sign == 'w': delta = datetime.timedelta(weeks=value) elif sign == 'd': delta = datetime.timedelta(days=value) elif sign == 'h': delta = datetime.timedelta(hours=value) elif sign == 'n': delta = datetime.timedelta(minutes=value) elif sign == 's': delta = datetime.timedelta(seconds=value) else: return None return dt + delta
这里推荐下部门老大的python教程我的第一个python web开发框架
http://www.cnblogs.com/EmptyFS/p/5208498.html
工具类代码摘自里面。
阅读全文
0 0
- Python踩坑之路-datetime模块的timedelta应用
- Python datetime 模块之timedelta
- Python datetime 模块之timedelta
- Python中datetime.timedelta的应用
- Python中datetime.timedelta的应用
- python3 datetime() 模块之 timedelta() 类
- python datetime.timedelta的日期计算
- python datetime.timedelta对象
- python 使用datetime模块timedelta实现日期时间相加
- python 使用datetime模块timedelta实现日期时间相加
- Python datetime模块之datetime
- Python模块之----datetime
- Python 之 datetime模块
- python 日期处理 date,datetime,timedelta
- python的timedelta
- python的datetime模块
- time模块与datetime以及timedelta模块基础用法
- 记录平常用到的datetime/timedelta用法
- Visual Studio 各版本下载
- 【23种设计模式——单例模式】
- 关于cookei的设置和删除
- [日推荐]『讯飞快读』人工智能高效管理时间
- 基于HTML5的WebGL经典3D虚拟机房漫游动画
- Python踩坑之路-datetime模块的timedelta应用
- 【备忘】年薪50万2017年最新北风网Spark2.0从入门到精通教程
- Linux_SS5 安装笔记
- 加解密算法
- 读写锁pthread_rwlock_t的使用
- 表达式树
- 《HTML之锚点》
- tp框架中使用PHPExcle插件
- 第8章 存储过程和触发器