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单线程实现多个定时器示例
Mar 30 Python
浅析Python多线程下的变量问题
Apr 28 Python
在Apache服务器上同时运行多个Django程序的方法
Jul 22 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
django之session与分页(实例讲解)
Nov 13 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
python模块导入的方法
Oct 24 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
Django 解决开发自定义抛出异常的问题
May 21 Python
教你用Python matplotlib库制作简单的动画
Jun 11 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删除数组中的特定元素的代码
2012/06/28 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
JS 树形递归实例代码
2010/05/18 Javascript
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
2016/02/19 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
python 判断自定义对象类型
2009/03/21 Python
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
Linux内核产生并发的原因
2012/07/13 面试题
师范毕业生求职自荐信
2013/09/25 职场文书
经济管理专业自荐信
2013/12/30 职场文书
致100米运动员广播稿
2014/02/14 职场文书
酒店管理求职信范文
2014/04/06 职场文书
教师节学生演讲稿
2014/09/03 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
MySQL分区表实现按月份归类
2021/11/01 MySQL
Python matplotlib绘制雷达图
2022/04/13 Python
element tree树形组件回显数据问题解决
2022/08/14 Javascript