Python之时间和日期使用小结


Posted in Python onFebruary 14, 2019

对于日期的操作可以说是比较常见的case了,日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现

1. 基本包引入

主要需要引入时间和日期的处理包,后面的基本操作都是基于此

import datetime
import time

2. 获取当前时间

获取当前时间,有几种方式,分别使用time和datetime来演示

a. time

获取当前时间,格式化为字符串输出

now = time.strftime("%Y-%m-%d %H:%M:%S")
print(now)

获取当前时间,以时间戳方式输出,结果为float类型,单位为s

now=time.time()
print(now)

Python之时间和日期使用小结

b. datetime

直接调用now()函数获取当前时间,返回datetime类型对象

now = datetime.datetime.now()
print(now)

Python之时间和日期使用小结

3. 时间戳转datetime

函数: datetime.datetime.fromtimestamp()

将时间戳转换为datetime类型,因为后者可以进行日期的计算(如常见的加减或者格式化)

# 获取当前的时间戳
now = time.time()
# 将时间差转换为datetime对象
date = datetime.datetime.fromtimestamp(now)
print(date)

Python之时间和日期使用小结

4. 时间戳转格式化日期a. time

函数 time.strftime(format, localtime) 和 time.localtime(timestamp)

借助time的time.strftime函数来实现转换,这里还需要做一个额外的处理,将时间戳转换为struct_time 对象

now = time.time()
# 首先格式化时间戳为struct_time对象,接着格式化输出
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(now))

Python之时间和日期使用小结

b. datetime

函数 datetime.datetime.fromtimestamp 与 datetime.datetime.strftime()

借助前面的知识点即可实现,先将timestamp转换为datetime, 然后将datetime格式化为字符串

now=time.time()
date =datetime.datetime.fromtimestamp(now)
date.strftime('%Y-%m-%d %H:%M:%S')

Python之时间和日期使用小结

5. 字符串转时间戳

函数 strptime(str) 与 time.mktime(struct_time)

前面格式化输出字符串时,主要利用的是strftime,这里则主要使用 strptime

now='2019-02-11 18:45:22'
struct_time=time.strptime(now , '%Y-%m-%d %H:%M:%S')
timestamp=time.mktime(struct_time)

Python之时间和日期使用小结

6. 字符串转datetime

函数 datetime.datetime.strptime(str, format)

依然使用strptime函数来实现转换

now='2019-02-11 18:45:22'
date=datetime.datetime.strptime(now, '%Y-%m-%d %H:%M:%S')

7. datetime 转字符串

函数 datetime.datetime.strftime(format)

利用strftime来实现

now = datetime.datetime.now()
now.strftime('%Y-%m-%d %H:%M:%S')

Python之时间和日期使用小结

8. datetime 转时间戳

函数 datetime.datetime.timestamp()

结合前面的这个就比较好实现了

now = datetime.datetime.now()
now.timestamp()

Python之时间和日期使用小结

9. datetime转struct_time

now = datetime.datetime.now()
# 转换为 struct_time 对象
t=now.timetuple()
# struct_time 输出时间戳
timestamp=time.mktime(t)

Python之时间和日期使用小结

10. 日期加减操作

函数 datetime.timedelta

日期的加减操作,这里主要是datetime对象来操作,一个简单的例子如下

now = datetime.datetime.now()

# 前一小时
d1 = now - datetime.timedelta(hours=1)
print(d1.strftime("%Y-%m-%d %H:%S:%M"))

# 前一天
d2 = now - datetime.timedelta(days=1)
print(d2.strftime("%Y-%m-%d %H:%S:%M"))

# 上周日
d3 = now - datetime.timedelta(days=now.isoweekday())
print(d3.strftime("%Y-%m-%d %H:%S:%M"), " ", d3.isoweekday())

# 上周一
d31 = d3 - datetime.timedelta(days=6)
print(d31.strftime("%Y-%m-%d %H:%S:%M"), " ", d31.isoweekday())

# 上个月最后一天
d4 = now - datetime.timedelta(days=now.day)
print(d3.strftime("%Y-%m-%d %H:%S:%M"))

# 上个月第一天
print(datetime.datetime(d4.year, d4.month, 1))

Python之时间和日期使用小结

11. 格式化符号

%y # 两位数的年份表示(00-99)
%Y # 四位数的年份表示(000-9999)
%m # 月份(01-12)
%d # 月内中的一天(0-31)
%H # 24小时制小时数(0-23)
%I # 12小时制小时数(01-12) 
%M # 分钟数(00=59)
%S # 秒(00-59)
 
%a # 本地简化星期名称
%A # 本地完整星期名称
%b # 本地简化的月份名称
%B # 本地完整的月份名称
%c # 本地相应的日期表示和时间表示
%j # 年内的一天(001-366)
%p # 本地A.M.或P.M.的等价符
%U # 一年中的星期数(00-53)星期天为星期的开始
%w # 星期(0-6),星期天为星期的开始
%W # 一年中的星期数(00-53)星期一为星期的开始
%x # 本地相应的日期表示
%X # 本地相应的时间表示
%Z # 当前时区的名称
%% # %号本身

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中请使用isinstance()判断变量类型
Aug 25 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
详解Python3序列赋值、序列解包
May 14 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
Python 列表反转显示的四种方法
Nov 16 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 22 Python
对Python Pexpect 模块的使用说明详解
Feb 14 #Python
python获取交互式ssh shell的方法
Feb 14 #Python
对python多线程SSH登录并发脚本详解
Feb 14 #Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 #Python
python 实现selenium断言和验证的方法
Feb 13 #Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 #Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 #Python
You might like
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
PHP如何使用Memcached
2016/04/05 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
JS数组转字符串实现方法解析
2020/09/04 Javascript
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
Python中的asyncio代码详解
2019/06/10 Python
Python3获取cookie常用三种方案
2020/10/05 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
请解释接口的显式实现有什么意义
2012/05/26 面试题
创业计划书撰写原则
2014/01/25 职场文书
机械制造毕业生求职信
2014/03/03 职场文书
医学求职自荐信
2014/06/21 职场文书
北京英文导游词
2015/02/12 职场文书
第一书记观后感
2015/06/08 职场文书
远程教育培训心得体会
2016/01/09 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android