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 self,cls,decorator的理解
Jul 13 Python
python删除过期文件的方法
May 29 Python
python实现多线程的两种方式
May 22 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
分享一下如何编写高效且优雅的 Python 代码
Sep 07 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
python绘制漏斗图步骤详解
Mar 04 Python
Django工程的分层结构详解
Jul 18 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
Python 生成VOC格式的标签实例
Mar 10 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
浅析php header 跳转
2013/06/17 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
JQuery从头学起第三讲
2010/07/06 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
python3制作捧腹网段子页爬虫
2017/02/12 Python
python em算法的实现
2020/10/03 Python
python eventlet绿化和patch原理
2020/11/21 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
仓库管理专业个人自我评价范文
2013/11/11 职场文书
行政专员工作职责
2013/12/22 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
工作表现评语
2014/01/19 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers
正则表达式基础与常用验证表达式
2022/06/16 Javascript