Python时间获取及转换知识汇总


Posted in Python onJanuary 11, 2017

 时间处理是我们日常开发中最最常见的需求,例如:获取当前datetime、获取当天date、获取明天/前N天、获取当天开始和结束时间(00:00:00 23:59:59)、获取两个datetime的时间差、获取本周/本月/上月最后一天等。而这些转换看起来很乱不容易记住,那么今天我们就来总结一下Python的时间的处理。

原则:以datetime为中心, 起点或中转, 转化为目标对象, 涵盖了大多数业务场景中需要的日期转换处理

步骤:

1. 掌握几种对象及其关系

2. 了解每类对象的基本操作方法

3. 通过转化关系转化

datetime是date与time的结合体,包括date与time的所有信息。

函数原型是:

datetime. datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

实例:

1.获取datetime对象

代码如下:

import datetime
now = datetime.datetime.now()
#输出:datetime.datetime(2016, 11, 26, 8, 34, 30, 876359)

2.获取timestamp(时间戳)

时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。

代码如下:

import time
time.time()
#输出:1480120686.733905

3.获取time tuple (元组)

代码如下:

import time
time.localtime()
#输出:time.struct_time(tm_year=2016, tm_mon=11, tm_mday=26, tm_hour=8, tm_min=39, tm_sec=33, tm_wday=5, tm_yday=331, tm_isdst=0)

4.获取时间string(字符串)

字符串格式化参数列表:
datetime. strftime (format)
%a: 星期的简写。如 星期三为Web
%A: 星期的全写。如 星期三为Wednesday
%b: 月份的简写。如4月份为Apr
%B: 月份的全写。如4月份为April
%c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
%d: 日在这个月中的天数(是这个月的第几天)
%f: 微秒(范围[0,999999])
%H: 小时(24小时制,[0, 23])
%I: 小时(12小时制,[0, 11])
%j: 日在年中的天数 [001,366](是当年的第几天)
%m: 月份([01,12])
%M: 分钟([00,59])
%p: AM或者PM
%S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
%U: 周在当年的周数当年的第几周),星期天作为周的第一天
%w: 今天在这周的天数,范围为[0, 6],6表示星期天
%W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
%x: 日期字符串(如:04/07/10)
%X: 时间字符串(如:10:43:39)
%y: 2个数字表示的年份
%Y: 4个数字表示的年份
%z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z: 时区名称(如果是本地时间,返回空字符串)
%%: %% => %

代码如下:

import datetime
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2016-11-26 08:40:39'

5.date(日期)

代码如下:

import datetime
datetime.datetime.now().date()
datetime.date(2016, 11, 26)

6.获取当天date

代码如下:

import datetime
datetime.date.today()
datetime.date(2016, 11, 26)

7.获取明天/前N天

明天

代码如下:

import datetime
datetime.date.today() + datetime.timedelta(days=1)
datetime.date(2016, 11, 27)

两天前

代码如下:

import datetime
>>> datetime.datetime.now()
datetime.datetime(2016, 11, 26, 8, 42, 59, 665368)
>>> datetime.datetime.now() - datetime.timedelta(days=3)
datetime.datetime(2016, 11, 24, 8, 43, 14, 696948)

8.获取当天开始和结束时间(00:00:00 23:59:59)

代码如下:

import datetime
datetime.datetime.combine(datetime.date.today(), datetime.time.min)
datetime.datetime(2016, 11, 26, 0, 0)
datetime.datetime.combine(datetime.date.today(), datetime.time.max)
datetime.datetime(2016, 11, 26, 23, 59, 59, 999999)

9.获取两个datetime的时间差

代码如下:

import datetime
(datetime.datetime(2016,12,13,12,0,0) - datetime.datetime.now()).total_seconds() 
1480506.809658

10.获取本周/本月/上月最后一天

本周

代码如下:

import datetime
today = datetime.date.today()
#输出: datetime.date(2016, 11, 26)
sunday = today + datetime.timedelta(6 - today.weekday())
#输出:datetime.date(2016, 11, 27)

本月

代码如下:

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)
#输出:datetime.date(2016, 11, 30)

11.获取上个月的最后一天(可能跨年)

代码如下:

import datetime
today = datetime.date.today()
first = datetime.date(day=1, month=today.month, year=today.year)
lastMonth = first - datetime.timedelta(days=1)
#输出:datetime.date(2016, 10, 31)

其他使用例子:

代码如下:

#当月1号
datetime.date(datetime.date.today().year,datetime.date.today().month,1)
#当月1号 
datetime.date.today().replace(day=1) 
#上月1号 
(datetime.date.today().replace(day=1) - datetime.timedelta(1)).replace(day=1)

以上所述是小编给大家介绍的Python时间获取及转换知识汇总,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
在Django中创建动态视图的教程
Jul 15 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
python logging日志模块原理及操作解析
Oct 12 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 24 Python
python 基于opencv 绘制图像轮廓
Dec 11 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 Python
json跨域调用python的方法详解
Jan 11 #Python
Python中遇到的小问题及解决方法汇总
Jan 11 #Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 #Python
SQLite3中文编码 Python的实现
Jan 11 #Python
利用python实现数据分析
Jan 11 #Python
使用python调用zxing库生成二维码图片详解
Jan 10 #Python
利用Python生成文件md5校验值函数的方法
Jan 10 #Python
You might like
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
javascript高级学习笔记整理
2011/08/14 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
Windows下安装python2.7及科学计算套装
2015/03/05 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python实现内存监控系统
2021/03/07 Python
Python3简单实现串口通信的方法
2019/06/12 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
巴西手表购物网站:eclock
2019/03/19 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
abstract是什么意思
2012/02/12 面试题
CAD制图设计师自荐信
2014/01/29 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
西柏坡观后感
2015/06/08 职场文书
任命书格式模板
2015/09/22 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
Python超详细分步解析随机漫步
2022/03/17 Python
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏