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中除法使用的注意事项
Aug 21 Python
python实现用于测试网站访问速率的方法
May 26 Python
python中Switch/Case实现的示例代码
Nov 09 Python
Python中eval带来的潜在风险代码分析
Dec 11 Python
Scrapy框架使用的基本知识
Oct 21 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Django更新models数据库结构步骤
Apr 01 Python
python爬虫快速响应服务器的做法
Nov 24 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 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
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
跟老齐学Python之做一个小游戏
2014/09/28 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
Python常见的pandas用法demo示例
2019/03/16 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python运行DLL文件的方法
2020/01/17 Python
python怎么判断素数
2020/07/01 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
销售经理工作职责范文
2013/12/03 职场文书
思想品德课教学反思
2014/02/10 职场文书
家长学校工作方案
2014/05/07 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
利用JavaScript写一个简单计算器
2021/11/27 Javascript