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中使用smtplib和email模块发送邮件实例
Apr 22 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
python实现对输入的密文加密
Mar 20 Python
python中安装django模块的方法
Mar 12 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
python接入支付宝的实例操作
Jul 20 Python
PyTorch安装与基本使用详解
Aug 31 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
Python利器openpyxl之操作excel表格
Apr 17 Python
Python操作CSV格式文件的方法大全
Jul 15 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
Zerg兵种介绍
2020/03/14 星际争霸
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
jquery实现心算练习代码
2010/12/06 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
vue.js表格分页示例
2016/10/18 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
vue双向绑定及观察者模式详解
2019/03/19 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Python科学计算之Pandas详解
2017/01/15 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
旅游业大学生创业计划书
2014/01/31 职场文书
婚礼主持词开场白
2014/03/13 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
保护环境倡议书500字
2014/05/19 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
答谢词范文
2015/01/05 职场文书
2015年党建工作总结
2015/03/30 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书