当前位置: 首页 > 面试题库 >

Python UTC日期时间对象的ISO格式不包含Z(Zulu或零偏移)

郭意
2023-03-14
问题内容

为什么python 2.7不像JavaScript那样在UTC日期时间对象的isoformat字符串的末尾不包含Z字符(Zulu或零偏移)?

>>> datetime.datetime.utcnow().isoformat()
'2013-10-29T09:14:03.895210'

而在javascript中

>>>  console.log(new Date().toISOString()); 
2013-10-29T09:38:41.341Z

问题答案:

Pythondatetime对象默认没有时区信息,没有它,Python实际上违反了ISO
8601规范(如果未提供时区信息,则假定为本地时间)。您可以使用pytz包获取一些默认时区,或者直接tzinfo自己子类化:

from datetime import datetime, tzinfo, timedelta
class simple_utc(tzinfo):
    def tzname(self,**kwargs):
        return "UTC"
    def utcoffset(self, dt):
        return timedelta(0)

然后,您可以将时区信息手动添加到utcnow()

>>> datetime.utcnow().replace(tzinfo=simple_utc()).isoformat()
'2014-05-16T22:51:53.015001+00:00'

请注意,此DOES符合ISO
8601格式,该格式允许Z+00:00作为UTC的后缀。请注意,后者实际上更好地符合了标准,并以一般方式表示时区(UTC是一种特例)。



 类似资料:
  • 我希望有一个单一的日期时间模式表达式能够: 使用偏移指示器序列化日期/瞬间,例如:2017-07-13T21:20:33.123 0000 重要的一点是序列化始终包括偏移量(),反序列化可以处理这两种情况(或) 到目前为止,我所尝试的: 我正在使用JDK8,带有新的内置的包。我尝试创建一个具有以下模式: 将用于解析和,但在序列化时不起作用。(例如使用UTC时,仅输出) 会解析,但不会解析(如果存在

  • 我正在将字符串类型的日期解析成日期格式,但每次都出现了这个异常 我的代码是:

  • 问题内容: 有没有一种打印Python日期时间的格式,该格式不会在日期和时间上使用零填充? 我现在使用的格式: 结果: 2012年2月29日下午5:03 所需 : 2012年2月29日下午5:03 什么格式将月份表示为“ 2”而不是“ 02”,将时间表示为“ 5:03 PM”而不是“ 05:03 PM” 问题答案: 可用的格式化选项将全部为零填充。您当然可以滚动使用自己的格式化功能,但是在这种情况

  • 有没有一种方法可以编写一个模式,该模式解析器“要么”两个可选部分之一?类似于()? 例如: 我想分析短(

  • 我有一个客户端JavaScript,它用JavaScript生成日期()。 我需要这个日期传递到一个隐藏的字段,后面的代码可以访问。 我的问题是,当隐藏字段转换为DotNet datetime时,时间是不正确的。这是因为JavaScript包含来自客户端浏览器的时区信息。 然后,DotNet使用此信息根据服务器时间和客户端时间之间的差异重新计算时间。 我需要的是JavaScript中的年、月和日。