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

 更新时间:2017年09月05日 11:01:46   作者:TheOneGIS  
国际标准化组织的国际标准ISO8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》,下面这篇文章主要给大家介绍了关于利用Python将时间或时间间隔转为ISO 8601格式的相关资料,需要的朋友可以参考下。

前言

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

对于时间间隔,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中Arrow库的时间操作技法总结

    Python中Arrow库的时间操作技法总结

    Arrow是一个功能强大、易用且具有优雅设计的Python日期时间库,它建立在Python的datetime模块之上,旨在弥补datetime模块在处理日期时间时的一些不足之处,下面我们就来了解一下Arrow库的常见时间操作吧
    2023-12-12
  • 使用Python和百度语音识别生成视频字幕的实现

    使用Python和百度语音识别生成视频字幕的实现

    这篇文章主要介绍了使用Python和百度语音识别生成视频字幕,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python常见的pandas用法demo示例

    Python常见的pandas用法demo示例

    这篇文章主要介绍了Python常见的pandas用法,结合实例形式总结分析了Python使用pandas模块的常见操作技巧与相关注意事项,需要的朋友可以参考下
    2019-03-03
  • Python利用Flask-Mail实现发送邮件详解

    Python利用Flask-Mail实现发送邮件详解

    Flask 的扩展包 Flask - Mail 通过包装了 Python 内置的smtplib包,可以用在 Flask 程序中发送邮件。本文将利用这特性实现邮件发送功能,感兴趣的可以了解一下
    2022-08-08
  • Python3 伪装浏览器的方法示例

    Python3 伪装浏览器的方法示例

    本篇文章主要介绍了Python3 伪装浏览器的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Python利用随机函数生成变化图形详解

    Python利用随机函数生成变化图形详解

    这篇文章主要介绍了如何在Python中利用随机函数生成变化的图形,文中的示例代码讲解详细,对我们学习有一定吧参考价值,需要的可以了解一下
    2022-04-04
  • 使用python远程操作linux过程解析

    使用python远程操作linux过程解析

    这篇文章主要介绍了使用python远程操作linux过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python实现随机生成手机号及正则验证手机号的方法

    Python实现随机生成手机号及正则验证手机号的方法

    这篇文章主要介绍了Python实现随机生成手机号及正则验证手机号的方法,涉及Python基于random模块的随机数以及基于re模块的正则验证相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python 中开发pattern的string模板(template) 实例详解

    Python 中开发pattern的string模板(template) 实例详解

    这篇文章主要介绍了Python 中开发pattern的string模板(template) 实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • Python3.5 Json与pickle实现数据序列化与反序列化操作示例

    Python3.5 Json与pickle实现数据序列化与反序列化操作示例

    这篇文章主要介绍了Python3.5 Json与pickle实现数据序列化与反序列化操作,结合实例形式分析了Python3.5使用Json与pickle模块实现json格式数据的序列化及反序列化操作相关步骤与注意事项,需要的朋友可以参考下
    2019-04-04

最新评论