利用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中正则表达式的用法实例汇总
Aug 18 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
python3学生名片管理v2.0版
Nov 29 Python
详解Matplotlib绘图之属性设置
Aug 23 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
python爬取股票最新数据并用excel绘制树状图的示例
Mar 01 Python
python numpy中multiply与*及matul 的区别说明
May 26 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
php 解压rar文件及zip文件的方法
2014/05/05 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
Boostrap实现的登录界面实例代码
2016/10/09 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
python基础教程之Filter使用方法
2017/01/17 Python
Python 备份程序代码实现
2017/03/06 Python
TensorFlow变量管理详解
2018/03/10 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python 自定义对象的打印方法
2019/01/12 Python
Python 切分数组实例解析
2019/11/07 Python
python实现视频读取和转化图片
2019/12/10 Python
Numpy之reshape()使用详解
2019/12/26 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
python3.4中清屏的处理方法
2020/07/06 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
化学教学随笔感言
2014/02/19 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书