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 相关文章推荐
wxPython框架类和面板类的使用实例
Sep 28 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
Python 性能优化技巧总结
Nov 01 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
python中property和setter装饰器用法
Dec 19 Python
pycharm快捷键汇总
Feb 14 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
python要安装在哪个盘
Jun 15 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数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
浅析PHP文件下载原理
2014/12/25 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
js数组操作学习总结
2013/11/04 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
python数据封装json格式数据
2018/03/04 Python
Python将图片转换为字符画的方法
2020/06/16 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
简单介绍django提供的加密算法
2019/12/18 Python
学python爬虫能做什么
2020/07/29 Python
通过代码实例了解Python sys模块
2020/09/14 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
教师网络培训感言
2014/03/09 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
通知函格式范文
2015/04/27 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers