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编写分析Python程序性能的工具的教程
Apr 01 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
Python做文本按行去重的实现方法
Oct 19 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
快速查询Python文档方法分享
Dec 27 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
python函数中将变量名转换成字符串实例
May 11 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
Python图片检索之以图搜图
May 31 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读取和编写XML DOM的实现代码
2011/02/03 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
获取Django项目的全部url方法详解
2017/10/26 Python
python制作简单五子棋游戏
2019/06/18 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
社区服务活动总结
2014/05/07 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
2014年国庆节寄语
2014/09/19 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
合作协议书模板
2014/10/10 职场文书
优秀教师事迹材料
2014/12/15 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS