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

作者:TheOneGIS 时间:2022-12-06 22:18:25 

前言

大家都知道,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

来源:http://blog.csdn.net/theonegis/article/details/54425636

标签:python,iso8601,时间
0
投稿

猜你喜欢

  • Vue之使用mockjs生成模拟数据案例详解

    2024-05-29 22:24:40
  • Python使用pymongo库操作MongoDB数据库的方法实例

    2023-06-04 06:20:22
  • Python基于Floyd算法求解最短路径距离问题实例详解

    2022-05-23 09:45:47
  • asp 小偷采集程序原理与常用函数方法

    2011-03-06 10:36:00
  • 基于python requests selenium爬取excel vba过程解析

    2021-06-18 23:47:09
  • MySQL InnoDB ReplicaSet(副本集)简单介绍

    2024-01-20 11:10:45
  • asp是什么格式 asp文件用什么打开

    2020-06-30 16:04:48
  • Python使用面向对象方式创建线程实现12306售票系统

    2021-01-22 09:13:36
  • python如何读取bin文件并下发串口

    2021-12-21 17:09:21
  • python判断windows系统是32位还是64位的方法

    2023-08-08 15:17:04
  • 不要放弃使用CSS中的新技术

    2009-05-15 12:49:00
  • numpy之sum()的使用及说明

    2023-12-12 00:31:16
  • element-ui中表格设置正确的排序及设置默认排序

    2024-05-09 15:25:48
  • python opencv设置摄像头分辨率以及各个参数的方法

    2021-03-05 00:23:34
  • Python tensorflow与pytorch的浮点运算数如何计算

    2023-06-28 14:13:15
  • 浅探express路由和中间件的实现

    2024-05-11 10:17:08
  • MySQL数据库的其它安全问题

    2008-12-23 15:40:00
  • js+css实现换肤效果

    2024-04-17 09:53:54
  • python 成功引入包但无法正常调用的解决

    2022-12-05 19:26:12
  • Python实现MySql数据库交互的示例

    2024-01-23 02:41:13
  • asp之家 网络编程 m.aspxhome.com