利用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使用CMD模块更优雅的运行脚本
May 11 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
实时获取Python的print输出流方法
Jan 07 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
Django Model中字段(field)的各种选项说明
May 19 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 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
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
PHP 实现缩略图
2021/03/09 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中sleep函数用法实例分析
2015/04/29 Python
通过实例了解python property属性
2019/11/01 Python
Python:slice与indices的用法
2019/11/25 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
Yahoo-PHP面试题1
2016/07/20 面试题
什么是.net的Remoting技术
2016/07/08 面试题
纪念建党演讲稿范文
2014/01/13 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
JAVA springCloud项目搭建流程
2022/05/11 Java/Android