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使用ftplib实现简易FTP客户端的方法
Jun 03 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
python3中eval函数用法使用简介
Aug 02 Python
python中eval与int的区别浅析
Aug 11 Python
你可能不知道的Python 技巧小结
Jan 29 Python
python实现飞行棋游戏
Feb 05 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 Python
对PyTorch中inplace字段的全面理解
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代码
2010/07/17 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
node.js开机自启动脚本文件
2014/12/24 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
微信小程序实现购物页面左右联动
2019/02/15 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
Python常用的日期时间处理方法示例
2015/02/08 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
pytorch数据预处理错误的解决
2020/02/20 Python
python2和python3哪个使用率高
2020/06/23 Python
Django REST 异常处理详解
2020/07/15 Python
Python json格式化打印实现过程解析
2020/07/21 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
班级道德讲堂实施方案
2014/02/24 职场文书
元旦联欢会主持词
2014/03/26 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
学历证明范文
2015/06/16 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android