利用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中序列与字典的相同和不同之处
Jan 19 Python
python制作企业邮箱的爆破脚本
Oct 05 Python
python实现报表自动化详解
Nov 16 Python
Django自定义manage命令实例代码
Feb 11 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
命令行运行Python脚本时传入参数的三种方式详解
Oct 11 Python
Django框架models使用group by详解
Mar 11 Python
python matplotlib库的基本使用
Sep 23 Python
python处理写入数据代码讲解
Oct 22 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
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php生成验证码函数
2015/10/20 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
JS在IE下缺少标识符的错误
2014/07/23 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
vue-router 导航钩子的具体使用方法
2017/08/31 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
python实现连连看辅助(图像识别)
2020/03/25 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
通过代码实例了解Python sys模块
2020/09/14 Python
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
汇科协同Java笔试题
2012/03/31 面试题
社区科普工作方案
2014/06/03 职场文书
退休欢送会致辞
2015/07/31 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android