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的time模块中的常用方法整理
Jun 18 Python
在Django的session中使用User对象的方法
Jul 23 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
Python处理CSV与List的转换方法
Apr 19 Python
python对html过滤处理的方法
Oct 21 Python
python实现大文本文件分割
Jul 22 Python
django框架单表操作之增删改实例分析
Dec 16 Python
python微信公众号开发简单流程实现
Mar 09 Python
Python如何实现机器人聊天
Sep 10 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
如何使用python包中的sched事件调度器
Apr 30 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
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
vue实现拖拽进度条
2021/03/01 Vue.js
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
python统计日志ip访问数的方法
2015/07/06 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
python清除函数占用的内存方法
2018/06/25 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python 函数中的参数类型
2020/02/11 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
小学生期末自我鉴定
2014/01/19 职场文书
高中生班主任评语
2014/04/25 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
小学庆六一活动总结
2014/08/28 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
2014年工程部工作总结
2014/11/25 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书