利用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实现baidu hi自动登录的代码
Feb 10 Python
使用Python脚本生成随机IP的简单方法
Jul 30 Python
Python实现约瑟夫环问题的方法
May 03 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
解决Python requests 报错方法集锦
Mar 19 Python
python生成密码字典的方法
Jul 06 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
Python中的引用知识点总结
May 20 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
python误差棒图errorbar()函数实例解析
Feb 11 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
56.com视频采集接口程序(PHP)
2007/09/22 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
Python构造函数及解构函数介绍
2015/02/26 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
python http接口自动化脚本详解
2018/01/02 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python八皇后问题解答过程详解
2019/07/29 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Python中six模块基础用法
2019/12/08 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
numba提升python运行速度的实例方法
2021/01/25 Python
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
50道外企软件测试面试题
2014/08/18 面试题
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
青春演讲稿范文
2014/05/08 职场文书
2014年后勤工作总结
2014/11/18 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
公司门卫岗位职责
2015/04/13 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
flex弹性布局详解
2022/03/20 HTML / CSS