利用Python将时间或时间间隔转为ISO 8601格式方法示例

发布时间 - 2026-01-11 03:06:47    点击率:

前言

大家都知道,Python自带的datetime库提供了将datetime转为ISO 8610格式的函数,但是对于时间间隔(inteval)并没有提供转换的函数,下面我们动手写一个。 下面话不多说了,来一起看看详细的介绍吧。

对于时间间隔,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  # iso8601  # iso  # 8601  # 时间格式  # iso8601时间格式转换  # 在 Python 中解析 ISO 8601 日期的  # 的是  # 大家都  # 也就  # 说了  # 不多  # 英文  # 这篇文章  # 自带  # 谢谢大家  # 转换成  # 有疑问  # element  # represents  # duration  # designator  # period  # data  # preceding  # character  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  无锡营销型网站制作公司,无锡网选车牌流程?  手机网站制作与建设方案,手机网站如何建设?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  如何在七牛云存储上搭建网站并设置自定义域名?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何在阿里云通过域名搭建网站?  专业商城网站制作公司有哪些,pi商城官网是哪个?  在线制作视频网站免费,都有哪些好的动漫网站?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  新三国志曹操传主线渭水交兵攻略  Laravel Session怎么存储_Laravel Session驱动配置详解  如何快速打造个性化非模板自助建站?  Python文件流缓冲机制_IO性能解析【教程】  如何快速搭建FTP站点实现文件共享?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  C语言设计一个闪闪的圣诞树  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何在Windows虚拟主机上快速搭建网站?  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何在云指建站中生成FTP站点?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何为不同团队 ID 动态生成多个“认领值班”按钮  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  EditPlus中的正则表达式实战(5)  再谈Python中的字符串与字符编码(推荐)  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel如何使用Collections进行数据处理?(实用方法示例)  微信小程序 canvas开发实例及注意事项  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  linux写shell需要注意的问题(必看)  如何确保西部建站助手FTP传输的安全性?  详解CentOS6.5 安装 MySQL5.1.71的方法  利用vue写todolist单页应用  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Python面向对象测试方法_mock解析【教程】  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  微信小程序 闭包写法详细介绍  魔方云NAT建站如何实现端口转发?