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中replace方法实例分析
Aug 20 Python
Python中的index()方法使用教程
May 18 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
解决python 找不到module的问题
Feb 12 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
Python的collections模块真的很好用
Mar 01 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 05 Python
Elasticsearch 批量操作
Apr 19 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php array_search() 函数使用
2010/04/13 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
JavaScript实现修改伪类样式
2017/11/27 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
详解Python爬虫的基本写法
2016/01/08 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
护士自荐信怎么写
2013/10/18 职场文书
高级方案规划工程师岗位职责
2013/11/29 职场文书
违反学校规定检讨书
2014/01/18 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
毕业设计致谢语
2015/05/14 职场文书
在职证明范本
2015/06/15 职场文书
红色故事汇观后感
2015/06/18 职场文书