利用Python将时间或时间间隔转为ISO 8601格式方法示例


Posted in Python onSeptember 05, 2017

前言

大家都知道,Python自带的datetime库提供了将datetime转为ISO 8610格式的函数,但是对于时间间隔(inteval)并没有提供转换的函数,下面我们动手写一个。 下面话不多说了,来一起看看详细的介绍吧。

对于时间间隔,ISO 8601的表示形式如下:

利用Python将时间或时间间隔转为ISO 8601格式方法示例

P表示的是时间间隔的前缀。YMDHMS分别表示年月日时分秒,W表示周。T表示后面的字符是精确到天的,也就是以小时表示开始的前缀。

英文解释如下 :

[P] is used as time-interval (period) designator, preceding a data element which represents a given duration of a time-interval;

The character [T] shall be used as time designator to indicate the start of the representation of time of the day in date and time expressions.

下面是实现代码:

# -*- encoding: utf-8 -*-

import datetime


def isoformat(time):
 '''
 将datetime或者timedelta对象转换成ISO 8601时间标准格式字符串
 :param time: 给定datetime或者timedelta
 :return: 根据ISO 8601时间标准格式进行输出
 '''
 if isinstance(time, datetime.datetime): # 如果输入是datetime
  return time.isoformat();
 elif isinstance(time, datetime.timedelta): # 如果输入时timedelta,计算其代表的时分秒
  hours = time.seconds // 3600
  minutes = time.seconds % 3600 // 60
  seconds = time.seconds % 3600 % 60
  return 'P%sDT%sH%sM%sS' % (time.days, hours, minutes, seconds) # 将字符串进行连接


if __name__ == '__main__':
 dtnow = datetime.datetime.now() # 获取现在时间
 print(isoformat(dtnow))

 dtpast = datetime.datetime(1990, 12, 31) # 获取过去某个时间点
 print(isoformat(dtpast))

 interval = dtnow - dtpast # 得到时间差
 print(interval)
 print(isoformat(interval))

输出结果如下:

2017-01-14T10:54:28.323000
1990-12-31T00:00:00
9511 days, 10:54:28.323000
P9511DT10H54M28S

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
通过源码分析Python中的切片赋值
May 08 Python
python reduce 函数使用详解
Dec 05 Python
django文档学习之applications使用详解
Jan 29 Python
Python csv模块使用方法代码实例
Aug 29 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
什么是python的函数体
Jun 19 Python
10个python爬虫入门实例(小结)
Nov 01 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 #Python
基于Django模板中的数字自增(详解)
Sep 05 #Python
用python结合jieba和wordcloud实现词云效果
Sep 05 #Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 #Python
python 生成器协程运算实例
Sep 04 #Python
python 文件操作删除某行的实例
Sep 04 #Python
Django数据库操作的实例(增删改查)
Sep 04 #Python
You might like
关于svn冲突的解决方法
2013/06/21 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
js更优雅的兼容
2010/08/12 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
js实现星星打分效果
2020/07/05 Javascript
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
深入了解Django View(视图系统)
2019/07/23 Python
Python: 传递列表副本方式
2019/12/19 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
汽车检测与维修专业求职信
2013/10/30 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
代理班主任的自我评价
2014/02/04 职场文书
安全生产演讲稿
2014/05/09 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
干部作风建设工作总结
2014/10/29 职场文书
档案工作个人总结
2015/03/03 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
MySQL之DML语言
2021/04/05 MySQL
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis
Python使用Web框架Flask开发项目
2022/06/01 Python