Python实用日期时间处理方法汇总


Posted in Python onMay 09, 2015

原则, 以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理

步骤:

1. 掌握几种对象及其关系
2. 了解每类对象的基本操作方法
3. 通过转化关系转化
涉及对象

1. datetime

>>> import datetime

>>> now = datetime.datetime.now()

>>> now

datetime.datetime(2015, 1, 12, 23, 9, 12, 946118)

>>> type(now)

<type 'datetime.datetime'>

2. timestamp

>>> import time

>>> time.time()

1421075455.568243

3. time tuple
>>> import time

>>> time.localtime()

time.struct_time(tm_year=2015, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=10, tm_sec=30, tm_wday=0, tm_yday=12, tm_isdst=0)

4. string

>>> import datetime

>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

'2015-01-12 23:13:08'

5. date

>>> import datetime

>>> datetime.datetime.now().date()

datetime.date(2015, 1, 12)

datetime基本操作

1. 获取当前datetime

>>> import datetime

>>> datetime.datetime.now()

datetime.datetime(2015, 1, 12, 23, 26, 24, 475680)

2. 获取当天date
>>> datetime.date.today()

datetime.date(2015, 1, 12)

3. 获取明天/前N天

明天

>>> datetime.date.today() + datetime.timedelta(days=1)

datetime.date(2015, 1, 13)

三天前
>>> datetime.datetime.now()

datetime.datetime(2015, 1, 12, 23, 38, 55, 492226)

>>> datetime.datetime.now() - datetime.timedelta(days=3)

datetime.datetime(2015, 1, 9, 23, 38, 57, 59363)

4. 获取当天开始和结束时间(00:00:00 23:59:59)

>>> datetime.datetime.combine(datetime.date.today(), datetime.time.min)

datetime.datetime(2015, 1, 12, 0, 0)

>>> datetime.datetime.combine(datetime.date.today(), datetime.time.max)

datetime.datetime(2015, 1, 12, 23, 59, 59, 999999)

5. 获取两个datetime的时间差
>>> (datetime.datetime(2015,1,13,12,0,0) - datetime.datetime.now()).total_seconds()

44747.768075

6. 获取本周/本月/上月最后一天

本周

>>> today = datetime.date.today()

>>> today

datetime.date(2015, 1, 12)

>>> sunday = today + datetime.timedelta(6 - today.weekday())

>>> sunday

datetime.date(2015, 1, 18)

本月

>>> import calendar

>>> today = datetime.date.today()

>>> _, last_day_num = calendar.monthrange(today.year, today.month)

>>> last_day = datetime.date(today.year, today.month, last_day_num)

>>> last_day

datetime.date(2015, 1, 31)

获取上个月的最后一天(可能跨年)

>>> import datetime

>>> today = datetime.date.today()

>>> first = datetime.date(day=1, month=today.month, year=today.year)

>>> lastMonth = first - datetime.timedelta(days=1)

关系转换

几个关系之间的转化

Datetime Object / String / timestamp / time tuple

关系转换例子

datetime <=> string

datetime -> string

>>> import datetime

>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

'2015-01-12 23:13:08'

string -> datetime

>>> import datetime

>>> datetime.datetime.strptime("2014-12-31 18:20:10", "%Y-%m-%d %H:%M:%S")

datetime.datetime(2014, 12, 31, 18, 20, 10)

datetime <=> timetuple

datetime -> timetuple

>>> import datetime

>>> datetime.datetime.now().timetuple()

time.struct_time(tm_year=2015, tm_mon=1, tm_mday=12, tm_hour=23, tm_min=17, tm_sec=59, tm_wday=0, tm_yday=12, tm_isdst=-1)

timetuple -> datetime

timetuple => timestamp => datetime [看后面datetime<=>timestamp]

datetime <=> date

datetime -> date

>>> import datetime

>>> datetime.datetime.now().date()

datetime.date(2015, 1, 12)

date -> datetime

>>> datetime.date.today()

datetime.date(2015, 1, 12)

>>> today = datetime.date.today()

>>> datetime.datetime.combine(today, datetime.time())

datetime.datetime(2015, 1, 12, 0, 0)

>>> datetime.datetime.combine(today, datetime.time.min)

datetime.datetime(2015, 1, 12, 0, 0)

datetime <=> timestamp

datetime -> timestamp

>>> now = datetime.datetime.now()

>>> timestamp = time.mktime(now.timetuple())

>>> timestamp

1421077403.0

timestamp -> datetime

>>> datetime.datetime.fromtimestamp(1421077403.0)

datetime.datetime(2015, 1, 12, 23, 43, 23)
Python 相关文章推荐
十条建议帮你提高Python编程效率
Feb 16 Python
python中input()与raw_input()的区别分析
Feb 27 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python 基础教程之闭包的使用方法
Sep 29 Python
Python3实现购物车功能
Apr 18 Python
python操作redis方法总结
Jun 06 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
Python json模块dumps、loads操作示例
Sep 06 Python
python 为什么说eval要慎用
Mar 26 Python
Python3获取拉勾网招聘信息的方法实例
Apr 03 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
python fabric使用笔记
May 09 #Python
Python字符串详细介绍
May 09 #Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 #Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 #Python
Python MySQLdb Linux下安装笔记
May 09 #Python
python实现类的静态变量用法实例
May 08 #Python
python使用pil生成图片验证码的方法
May 08 #Python
You might like
php上传文件常见问题总结
2015/02/03 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
js将json格式内容转换成对象的方法
2013/11/01 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python科学画图代码分享
2017/11/29 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
详解python内置模块urllib
2020/09/09 Python
英国网上电器商店:Electricshop
2020/03/15 全球购物
运动会获奖感言
2014/02/11 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
银行授权委托书格式
2014/10/10 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
助学感谢信范文
2015/01/21 职场文书
安全教育主题班会教案
2015/08/12 职场文书