利用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中replace方法实例分析
Aug 20 Python
Python 基础教程之str和repr的详解
Aug 20 Python
Python3多线程操作简单示例
May 22 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python读取Excel表格文件的方法
Sep 02 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
python3实现Dijkstra算法最短路径的实现
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转义Json里的特殊字符的函数
2015/06/08 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
从零学Python之入门(二)基本数据类型
2014/05/25 Python
python生成二维码的实例详解
2017/10/29 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
python如何安装下载后的模块
2020/07/03 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
如何理解委托
2012/01/06 面试题
主持词开场白
2014/03/17 职场文书
党校毕业心得体会
2014/09/13 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
调解协议书范本
2016/03/21 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
Django显示可视化图表的实践
2021/05/10 Python