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自动化工具日志查询分析脚本代码实现
Nov 26 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
python调用摄像头显示图像的实例
Aug 03 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
python issubclass 和 isinstance函数
Jul 25 Python
python同步windows和linux文件
Aug 29 Python
Python笔试面试题小结
Sep 07 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
python中的时区问题
Jan 14 Python
Python使用tkinter制作在线翻译软件
Feb 22 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性能优化准备篇图解PEAR安装
2011/12/05 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
php使用GeoIP库实例
2014/06/27 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
简单谈谈json跨域
2016/03/13 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
2019/07/19 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
仓库组长岗位职责
2014/01/29 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
信息技术课后反思
2014/04/27 职场文书
股东授权委托书范本
2014/09/13 职场文书
自荐信怎么写
2015/03/04 职场文书
音乐会主持人开场白
2015/05/28 职场文书
2015双创工作总结
2015/07/24 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
深入理解Pytorch微调torchvision模型
2021/11/11 Python
Python 绘制多因子柱状图
2022/05/11 Python