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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
利用Python实现命令行版的火车票查看器
Aug 05 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
对Python实现简单的API接口实例讲解
Dec 10 Python
python2.7实现邮件发送功能
Dec 12 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
通过自学python能找到工作吗
Jun 21 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
python 基于selectors库实现文件上传与下载
Dec 31 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
一个odbc连mssql分页的类
2006/10/09 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php中函数的形参与实参的问题说明
2010/09/01 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
PHP重载基础知识回顾
2020/09/10 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python中文编码知识点
2019/02/18 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python读取并写入mat文件的方法
2019/07/12 Python
python实现超市商品销售管理系统
2019/11/22 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
2014年清明节寄语
2014/04/03 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
个人收入证明模板
2014/09/18 职场文书
小学毕业感言100字
2015/07/30 职场文书
python如何读取.mtx文件
2021/04/22 Python
Java实现多文件上传功能
2021/06/30 Java/Android
使用python创建股票的时间序列可视化分析
2022/03/03 Python