利用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列表和元组的定义与使用操作示例
Jul 26 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
Python-Flask:动态创建表的示例详解
Nov 22 Python
python实现连连看游戏
Feb 14 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
Pytorch环境搭建与基本语法
Jun 03 Python
Python OpenCV实现图像模板匹配详解
Apr 07 Python
Elasticsearch 批量操作
Apr 19 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防注入类实例
2014/12/05 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
js获取当前日期前七天的方法
2015/02/28 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
python字典序问题实例
2014/09/26 Python
python实现教务管理系统
2018/03/12 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
优秀语文教师事迹
2014/05/18 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python