文章目录

  • 一、ISO 8601日期时间
    • 1. 简介
    • 2. 格式
    • 3. 时区划分
  • 二、Python处理ISO 8601日期时间
    • 1. 将 ISO 8601 转化为 UTC 标准日期时间 / 本地时间
    • 2. 两个 ISO 8601 日期时间的差值
    • 3. 时间戳转ISO 8601日期时间
  • 参考

一、ISO 8601日期时间

1. 简介

国际标准ISO 8601,是国际标准化组织的日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》

2. 格式

  • ISO 8601日期格式

    YYYY-MM-DDThh:mm:ss[.mmm]TZD

    各字段含义如下:

    字段 含义
    YYYY 表示四位数的年份
    MM 表示两位数的月份
    DD 表示两位数的天(day of the month),从01到31
    T 是用来指示时间元素的开始字符
    hh 表示两位数的小时,从00到23,不包括AM/PM
    mm 表示两位数的分钟,从00到59
    ss 表示两位数的秒,从00到59
    mmm 表示三位数的毫秒数,从000到999
    TZD 表示时区指示符:Z或+hh:mm或-hh:mm,+或-表示时区距离UTC(世界标准时间)时区多远。
    例如:CST(中国标准时间):UTC +08:00,EST(东部标准时间):UTC -05:00,CST(中部标准时间):UTC -06:00
  • 样例
    2022-07-24T00:14:01.954+08:00:表示世界标准时间UTC为2022年07月24日00点14分01秒954毫秒,当前地区所在时区距离UTC标准时提前08时00分

3. 时区划分

  • 世界时区图

    地球上共有360度经度,按照15度一个时区,将全球分为24个时区。以0度经线开始计算,往东方向,依次分为东一区、东二区、东三区…东十二区;往西方向,依次为西一区、西二区、西三区…西十二区。其中西十二区和东十二区共占一个时区,成为东西十二区。其中,中时区即世界标准时间UTC,向东每经过一个时区,+1小时,向西每经过一个 时区,-1小时。例如首都北京处于东八区,那么就+8小时,即2022-07-24T00:14:01.954+08:00中的+08:00

二、Python处理ISO 8601日期时间

1. 将 ISO 8601 转化为 UTC 标准日期时间 / 本地时间

  • 截取UTC 标准日期时间
    2022-07-24T00:14:01.954+08:00 —> 2022-07-24 00:14:01
import timet0 = '2022-07-24T00:14:01.954+08:00'format1 = "%Y-%m-%dT%H:%M:%S.%f+08:00"
t1 = time.strptime(t0, format1)  # time.struct_time(tm_year=2022, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=14, tm_sec=1, tm_wday=6, tm_yday=205, tm_isdst=-1)format2 = "%Y-%m-%d %H:%M:%S"
t2 = time.strftime(format2, t1)  # 2022-07-24 00:14:01
  • 转化为本地日期时间
    2022-07-24T00:14:01.954+08:00 —> 2022-07-24 08:14:01
import dateutil.parser
from datetime import timezone# 将字符串时间 转化为 datetime 对象
dateObject = dateutil.parser.isoparse('2022-07-24T00:14:01.954+08:00')  # 2022-07-24 00:14:01.954000+08:00
# 根据时区 转化为 datetime 数据
localdt = dateObject.replace(tzinfo=timezone.utc).astimezone(tz=None)  # 2022-07-24 08:14:01.954000+08:00
# 产生本地格式 字符串
localtime = localdt.strftime('%Y-%m-%d %H:%M:%S')  # 2022-07-24 08:14:01

2. 两个 ISO 8601 日期时间的差值

2022-07-24T00:14:02.954+08:00 - 2022-07-24T00:14:01.954+08:00 = 01s

from datetime import datetimeformat = "%Y-%m-%dT%H:%M:%S.%f+08:00"t0 = '2022-07-24T00:14:01.954+08:00'
t1 = '2022-07-24T00:14:02.954+08:00's0 = datetime.strptime(t0, format)
s1 = datetime.strptime(t1, format)sub = (s1 - s0).seconds  # 1

3. 时间戳转ISO 8601日期时间

2022-07-24 01:40:02.867706 —>2022-07-23T17:40:02.867706+08:00

import time
import datetime# datetime时间戳
t0 = datetime.datetime.now()  # 2022-07-24 01:40:02.867706# ISO 8601本地
t1 = datetime.datetime.now().isoformat()  # 2022-07-24T01:40:02.867706# UTC至ISO 8601
t2 = datetime.datetime.utcnow().isoformat()  # 2022-07-23T17:40:02.867706# 本地到ISO 8601没有微秒
t3 = datetime.datetime.now().replace(microsecond=0).isoformat()  # 2022-07-24T01:40:02# 带有TimeZone信息的UTC到ISO 8601
t4 = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat()  # 2022-07-23T17:40:02.867706+00:00# 带有TimeZone信息的本地ISO 8601
utc_offset_sec = time.altzone if time.localtime().tm_isdst else time.timezone
utc_offset = datetime.timedelta(seconds=-utc_offset_sec)
t5 = datetime.datetime.now().replace(tzinfo=datetime.timezone(offset=utc_offset)).isoformat()  # 2022-07-24T01:40:02.867706+08:00

参考

ISO 8601日期格式与持续时间格式
世界时区
地理小常识:时区的计算
python 时间戳转iso 8601_Python中的ISO时间(ISO 8601)
python中时间转换
python-ISO格式 转化为 本地时间

Python处理ISO 8601日期时间相关推荐

  1. 一起Polyfill系列:让Date识别ISO 8601日期时间格式

    一.什么是ISO 8601日期时间格式 ISO 8601是国际标准化组织制定的日期时间表示规范,全称是<数据存储和交换形式·信息交换·日期和时间的表示方法>. 示例: 1. 2014-12 ...

  2. java8 iso8601,Java 8 DateTimeFormatter使用偏移拒绝正确的ISO 8601日期/时间

    这有点复杂. As jvdmr says,Xs的数量很重要. XXXXX将识别-08:30:15,但不是-083015. XXXX将承认后者,但不承认前者. 为了考虑所有可能的示例格式,我们需要指定不 ...

  3. java yyyy-mm-ddthh:mm:ssz,解析格式为YYYY-MM-DDTHH-MM-SSZ的ISO 8601日期时间

    I have a large dataframe with time stamps that look like this: "2019-05-15T01:42:15.072Z" ...

  4. ISO 8601 utc 时间

    维基百科,自由的百科全书 跳转到导航跳转到搜索 ISO 8601 数据元素和交换格式 - 信息交换 - 日期和时间的表示是一种涵盖日期和时间相关数据交换的国际标准.它由国际标准化组织(ISO)发布,并 ...

  5. ISO 8601日期格式与持续时间格式

    ISO 8601日期格式与持续时间格式 国际标准ISO 8601,是国际标准化组织的日期和时间的表示方法,全称为<数据存储和交换形式·信息交换·日期和时间的表示方法>.目前是2004年12 ...

  6. java ISO 8601 日期格式进行转换

    ISO 8601 日期格式进行转换 痛点 懂的都懂,烦死啦!嘤嘤嘤. 时间是让人猝不及防的东西,有时天晴,有时雨.如果时间有个倒退时光的API,我愿意回到原始社会,那里没有汽车,没有高楼,没有电脑,更 ...

  7. Python将字符串转换为日期时间

    In this tutorial, we'll see how to convert string to datetime in python. 在本教程中,我们将看到如何在python中将字符串转换 ...

  8. Java格式化ISO 8601 日期格式

    Java格式化ISO 8601 日期格式 public static void main(String[] args) {SimpleDateFormat s = new SimpleDateForm ...

  9. java iso 8601_如何在iOS上获得ISO 8601日期?

    一个经常被忽视的问题是ISO 8601格式的字符串可能有毫秒而不是 . 换句话说,"2016-12-31T23:59:59.9999999"和"2016-12-01T00 ...

最新文章

  1. Js插入元素到数组的头部和尾部 unshift push
  2. 10亿级数据规模的半监督图像分类模型,Imagenet测试精度高达81.2% | 技术头条...
  3. 小程序读取富文本mysql存储_微信小程序API 富文本·EditorContext实例
  4. ActiveReport的小数显示方法
  5. 如何保证RabbitMQ消息队列的高可用?
  6. python rpy2后封装_转换rpy2的python对象
  7. 如何将java程序打包成exe文件?
  8. AI 新基建怎么做,腾讯云正式公布全景布局
  9. js中引用类型赋值(拷贝)问题
  10. mysql创建数据库sql语句_创建数据库的SQL语句:mysql数据库
  11. 迅雷快车旋风链接转换成普通链接工具
  12. 程序员风格的修真小说之炫小说
  13. 一曲京声人去远——纪念刘大中校友100周年诞辰
  14. XML转Json 设置指定节点为数组
  15. .o0博客导读0o. 1/23/2016最后更新
  16. 读经典《C程序设计语言》(The C Programming Language)
  17. Lua入门(1) 编译环境、变量类型与三种结构的实现
  18. Java的 Class字节码文件结构和内容全面解析【两万字】
  19. 用python画股票分时图 github_GitHub - DogeWatch/stock: stock,股票系统。使用python进行开发。...
  20. oracle sql语句中like %参数%的用法

热门文章

  1. 恢复你的IE-对某些网站恶意修改的恢复方法
  2. 【活动预告】众享比特2020战略发布会重磅来袭
  3. 标点符号相关的英语单词
  4. 【pen200-lab】10.11.1.120
  5. 推荐几个Java全栈学习的网站
  6. Windows关机/重启命令
  7. [世界读书日] 最好的书,都在博雅之中
  8. 完全图(二分,图论)
  9. uve 使用百度ueditor自定义图片上传,在线图片插入,在线图片管理
  10. 如何实现O2O闭环 O2O闭环交易流程是什么?