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 相关文章推荐
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
python requests模拟登陆github的实现方法
Dec 26 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
tensorflow的计算图总结
Jan 12 Python
python绘制雷达图实例讲解
Jan 03 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
在pycharm中无法import所安装的库解决方案
May 31 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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的面向对象编程
2006/10/09 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
JavaScript 继承的实现
2009/07/09 Javascript
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
jQuery 工具函数学习资料
2010/04/29 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
销售顾问的岗位职责
2013/11/13 职场文书
教师个人读书活动总结
2014/07/08 职场文书
群众路线领导对照材料
2014/08/23 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
售房协议书范本2014
2014/10/23 职场文书
党委工作总结2015
2015/04/27 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书