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递归函数定义与用法示例
Jun 02 Python
python重试装饰器的简单实现方法
Jan 31 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
Python坐标线性插值应用实现
Nov 13 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
jupyter note 实现将数据保存为word
Apr 14 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 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+dbfile开发小型留言本
2006/10/09 PHP
PHP 柱状图实现代码
2009/12/04 PHP
php 数组的一个悲剧?
2011/05/11 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JS获取键盘上任意按键的值(实例代码)
2013/11/12 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
jQuery实现图片轮播特效代码分享
2015/09/15 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
2016/12/08 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
基于python使用tibco ems代码实例
2019/12/20 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
keras 权重保存和权重载入方式
2020/05/21 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
自荐信的两点禁忌
2013/10/30 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
好矿嫂事迹材料
2014/01/21 职场文书
领导干部考察材料
2014/02/08 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
2021年最新用于图像处理的Python库总结
2021/06/15 Python
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers