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

yipeiwu_com7年前Python基础

前言

大家都知道,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设计】的支持。

相关文章

django之自定义软删除Model的方法

软删除 简单的说,就是当执行删除操作的时候,不正真执行删除操作,而是在逻辑上删除一条记录。这样做的好处是可以统计数据,可以进行恢复操作等等。 预备知识 Managers Mana...

详解python单例模式与metaclass

单例模式的实现方式 将类实例绑定到类变量上 class Singleton(object): _instance = None def __new__(cls, *args...

Python中join和split用法实例

join用来连接字符串,split恰好相反,拆分字符串的。 不用多解释,看完代码,其意自现了。 复制代码 代码如下: >>>li = ['my','name','is'...

使用python代码进行身份证号校验的实现示例

使用python代码进行身份证号校验的实现示例

先说,还有很多可以优化的地方。 1、比如加入15位身份证号的校验,嗯哼,15位的好像没有校验,那就只能提取个出生年月日啥的了。 2、比如判断加入地址数据库,增加输出信息 3、增加时间判...

linux下python中文乱码解决方案详解

linux下python中文乱码解决方案详解

1. 场景描述 linux服务器下安装了Anaconda3,执行Pyhton的K-means算法,结果出现如下图的中文字符乱码。上次已经解决了,忘记记录解决流程了,这次配置了一台新的服...