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 相关文章推荐
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
python3实现暴力穷举博客园密码
Jun 19 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
Python实现多属性排序的方法
Dec 05 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
python归并排序算法过程实例讲解
Nov 04 Python
一劳永逸彻底解决pip install慢的办法
May 24 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
php数组应用之比较两个时间的相减排序
2008/08/18 PHP
PHP cron中的批处理
2008/09/16 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
window.showModalDialog使用手册
2007/01/11 Javascript
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
浅谈JavaScript中的“!!”作用
2020/08/03 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
Python中线程编程之threading模块的使用详解
2015/06/23 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
python django事务transaction源码分析详解
2017/03/17 Python
python从子线程中获得返回值的方法
2019/01/30 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
了解一下python内建模块collections
2020/09/07 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
五年级数学教学反思
2014/02/11 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
工作收入证明模板
2015/06/12 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
区域销售大会开幕词
2016/03/04 职场文书