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制作简单的钢琴程序的教程
Apr 01 Python
Python中计算三角函数之cos()方法的使用简介
May 15 Python
对pandas中to_dict的用法详解
Jun 05 Python
Python的UTC时间转换讲解
Feb 26 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
OpenCV+face++实现实时人脸识别解锁功能
Aug 28 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
python 串行执行和并行执行实例
Apr 30 Python
python使用建议与技巧分享(二)
Aug 17 Python
python中altair可视化库实例用法
Jan 26 Python
Python实现byte转integer
Jun 03 Python
Python实现位图分割的效果
Nov 20 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 Ajax实现页面无刷新发表评论
2007/01/02 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
js 通用订单代码
2013/12/23 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
super关键字的用法
2012/04/10 面试题
.NET初级开发工程师面试题
2014/04/18 面试题
股权收购意向书
2014/04/01 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers