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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
Python中用sleep()方法操作时间的教程
May 22 Python
Django中使用group_by的方法
May 26 Python
浅谈Python中的闭包
Jul 08 Python
python使用psutil模块获取系统状态
Aug 27 Python
详解 Python 读写XML文件的实例
Aug 02 Python
详解python基础之while循环及if判断
Aug 24 Python
python中验证码连通域分割的方法详解
Jun 04 Python
python批量获取html内body内容的实例
Jan 02 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
Django实现翻页的示例代码
May 24 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
PHP&MYSQL服务器配置说明
2006/10/09 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
大家都应该掌握的PHP关联数组使用技巧
2015/12/25 PHP
php将html转为图片的实现方法
2017/05/19 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
ext 代码生成器
2009/08/07 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
美国老牌主机服务商:iPage
2016/07/22 全球购物
校庆活动方案
2014/03/31 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
redis中lua脚本使用教程
2021/11/01 Redis
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL