Python UTC时间戳与ISO格式

9 浏览
0 Comments

Python UTC时间戳与ISO格式

我知道这个问题已经被问过了,但是那里没有提供解决方案。

我正在寻找一种在Python中以这种格式生成UTC时间戳的简洁方式。我需要的格式是2013-10-29T09:38:41.341Z

具体来说,我需要在末尾包含"Z"。Python的datetime.utcnow().isoformat()不会在末尾添加"Z"。

请注意,手动添加"Z"不是我能接受的解决方案。我正在寻找一种简洁的方法来做到这一点。

有没有一种简洁的方法来生成带有后缀Z的ISO格式的UTC时间戳?

0
0 Comments

Python UTC时间戳与ISO格式的问题出现的原因是没有现成的Python库能够直接提供带有ISO格式的UTC时间戳。然而,可以通过使用第三方库arrow来解决这个问题。

首先需要使用pip安装arrow库:

$ pip install arrow

安装完成后,可以使用以下代码获取ISO格式的UTC时间戳,但不包含Zulu格式:

import arrow
arrow.utcnow().isoformat()

如果需要自定义ISO格式的UTC时间戳,可以使用以下代码:

arrow.utcnow().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z'

然而,需要注意的是这个格式并不是题目所要求的,因为它包含了"+00:00"而不是"Z"后缀。如果需要"Z"后缀,可以使用以下代码:

arrow.utcnow().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z'

,问题的原因是缺乏现成的Python库能够直接提供带有ISO格式的UTC时间戳,但可以通过使用arrow库来解决这个问题。使用arrow库可以获取ISO格式的UTC时间戳,或者自定义ISO格式的UTC时间戳包含"Z"后缀。

0
0 Comments

问题的出现原因是在获取Python UTC时间戳时,希望以ISO格式(包括毫秒和'Z')进行展示。然而,在使用datetime.utcfromtimestamp()函数时,直接使用.isoformat()方法会丢失秒和毫秒的信息。

为了解决这个问题,提供了一个更加精简的解决方案:datetime.utcnow().isoformat(timespec='milliseconds')+ 'Z',它能够正确地获取带有毫秒和'Z'的ISO格式的时间戳。

下面通过实例进行演示:

# 示例1
datetime.utcfromtimestamp(0.1).isoformat(timespec='milliseconds')+ 'Z'
# 输出:'1970-01-01T00:00:00.100Z'
datetime.utcfromtimestamp(0).isoformat(timespec='milliseconds')+ 'Z'
# 输出:'1970-01-01T00:00:00.000Z'
# 示例2
datetime.datetime.now(tz=datetime.timezone.utc).isoformat()+'Z'
# 输出:'...+00:00Z'(无效)

通过使用datetime.utcnow().isoformat(timespec='milliseconds')+ 'Z'方法,可以正确地获取带有毫秒和'Z'的ISO格式的时间戳,避免了手动添加'Z'的麻烦。

0
0 Comments

Python UTC时间戳以ISO格式的问题可能是由于代码要求生成带有ISO格式的UTC时间戳,但是现有的解决方法并不符合作者的标准,被认为是不优雅和不干净的。作者希望找到一个更好的解决方法,但是又不能改变要求。在讨论中,有人提出了使用

datetime.utcnow().isoformat()[:-3] + 'Z'

的方法来生成带有ISO格式的UTC时间戳,但是作者认为这样的解决方法不符合自己的标准。另外,还有人提出了使用

datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')

的方法来生成带有ISO格式的UTC时间戳,但是这种方法没有包含毫秒。最后,作者认为将审美观应用于编码是不明智的,因为内部实现可能是丑陋的。

0