利用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基础之字符编码
Jun 14 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
python如何读写json数据
Mar 21 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
Python实现App自动签到领取积分功能
Sep 29 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
python3 enum模块的应用实例详解
Aug 12 Python
Python3如何判断三角形的类型
Apr 12 Python
Django如何使用redis作为缓存
May 21 Python
Python with语句用法原理详解
Jul 03 Python
python中判断数字是否为质数的实例讲解
Dec 06 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/08/27 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
php使用google地图应用实例
2014/12/31 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
jquery对表单操作2
2011/04/06 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python输出各行命令详解
2018/02/01 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
python中round函数如何使用
2020/06/19 Python
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
环境科学专业个人求职信
2013/12/15 职场文书
学生自我评价范文
2014/02/02 职场文书
干部对照检查材料范文
2014/08/26 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
董事长致辞
2015/07/29 职场文书
2016年国陪研修感言
2015/11/18 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
乔迁新居祝福语
2019/11/04 职场文书
利用python做表格数据处理
2021/04/13 Python
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python