利用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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
深入浅析Python传值与传址
Jul 10 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
python批量下载抖音视频
Jun 17 Python
python3中eval函数用法使用简介
Aug 02 Python
Python 点击指定位置验证码破解的实现代码
Sep 11 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
Python 字符串池化的前提
Jul 03 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
javascript实现简单的ajax封装示例
2016/12/28 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python反编译学习之字节码详解
2019/05/19 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
python re模块和正则表达式
2021/03/24 Python
自我推荐书
2013/12/04 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
实践论读书笔记
2015/06/29 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js