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 functools模块学习总结
May 09 Python
Python使用Redis实现作业调度系统(超简单)
Mar 22 Python
python图像常规操作
Nov 11 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
Django Haystack 全文检索与关键词高亮的实现
Feb 17 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
python之django路由和视图案例教程
Jul 26 Python
Python OpenCV形态学运算示例详解
Apr 07 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中的加密功能
2006/10/09 PHP
PHP提取中文首字母
2008/04/09 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
javascript Event对象详解及使用示例
2013/11/22 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
React组件生命周期详解
2017/07/03 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
Python基础练习之用户登录实现代码分享
2017/11/08 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
python list多级排序知识点总结
2019/10/23 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
生物技术专业求职信
2014/06/10 职场文书
个人主要事迹材料
2014/08/26 职场文书
实习介绍信模板
2015/01/30 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL