利用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实现多线程抓取知乎用户
Dec 12 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
使用python socket分发大文件的实现方法
Jul 08 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 Python
python switch 实现多分支选择功能
Dec 21 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 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中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
python表格存取的方法
2018/03/07 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
在双python下设置python3为默认的方法
2018/10/31 Python
Python中的流程控制详解
2021/02/18 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
公司承诺书范文
2014/05/19 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
三年级学生期末评语
2014/12/26 职场文书
学术会议通知范文
2015/04/15 职场文书
个人业务学习心得体会
2016/01/25 职场文书