利用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实现的二叉树算法和kmp算法实例
Apr 25 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
python去除文件中重复的行实例
Jun 29 Python
Python 变量类型详解
Oct 10 Python
python RabbitMQ 使用详细介绍(小结)
Nov 08 Python
Python地图绘制实操详解
Mar 04 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
Python面向对象原理与基础语法详解
Jan 02 Python
Python 如何查找特定类型文件
Aug 17 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 Python
浅谈Python类的单继承相关知识
May 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计算两个日期相差天数的代码
2015/12/23 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
python中查看变量内存地址的方法
2015/05/05 Python
详解Swift中属性的声明与作用
2016/06/30 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python实现日常记账本小程序
2018/03/10 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
python matplotlib拟合直线的实现
2019/11/19 Python
Python 如何实现访问者模式
2020/07/28 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
体育教育专业自荐信范文
2013/12/20 职场文书
初二生物教学反思
2014/02/03 职场文书
新年联欢会主持词
2014/03/27 职场文书
婚礼秀策划方案
2014/05/19 职场文书
法学求职信
2014/06/22 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
留学推荐信怎么写
2015/03/26 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
义诊活动通知
2015/04/24 职场文书
Redis+AOP+自定义注解实现限流
2022/06/28 Redis