利用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实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
3个用于数据科学的顶级Python库
Sep 29 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
python实现广度优先搜索过程解析
Oct 19 Python
Python 脚本的三种执行方式小结
Dec 21 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
PyInstaller的安装和使用的详细步骤
Jun 02 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 Python
python excel多行合并的方法
Dec 09 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
python字符串的多行输出的实例详解
Jun 08 Python
Django实现drf搜索过滤和排序过滤
Jun 21 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&&mysql)一
2006/10/09 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
javascript来定义类的规范小结
2010/11/19 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
Python的词法分析与语法分析
2013/05/18 Python
python基础教程之udp端口扫描
2014/02/10 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Python 定义只读属性的实现方式
2020/03/05 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
十岁生日家长答谢词
2014/01/17 职场文书
领导调研接待方案
2014/02/27 职场文书
委托公证书范本
2014/04/03 职场文书
班主任经验交流材料
2014/12/16 职场文书
婚礼答谢词
2015/01/04 职场文书
全民创业工作总结
2015/08/13 职场文书
诉讼和解协议书
2016/03/23 职场文书
浅谈MySql整型索引和字符串索引失效或隐式转换问题
2021/11/20 MySQL