在 Python 中生成 RFC 3339 时间戳

编程入门 行业动态 更新时间:2024-10-26 14:37:01
本文介绍了在 Python 中生成 RFC 3339 时间戳的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试在 Python 中生成 RFC 3339 UTC 时间戳.到目前为止,我已经能够做到以下几点:

>>>d = 日期时间.日期时间.现在()>>>打印 d.isoformat('T')2011-12-18T20:46:00.392227

我的问题是设置 UTC 偏移量.

根据docs,classmethod datetime.now([tz]),采用可选的 tz 参数,其中 tz 必须是类 tzinfo 子类 和 datetime.tzinfo 的实例是时区信息对象的抽象基类.

这就是我迷路的地方 - 为什么 tzinfo 是一个抽象类,我应该如何实现它?

(注意:在 PHP 中它就像 timestamp = date(DATE_RFC3339); 一样简单,这就是为什么我不明白为什么 Python 的方法如此复杂...)

解决方案

UPDATE 2021

在 Python 3.2 中 timezone 被添加到 datetime 模块中,允许您轻松地为 UTC 分配时区.

>>>导入日期时间>>>n = datetime.datetime.now(datetime.timezone.utc)>>>n.isoformat()'2021-07-13T15:28:51.818095+00:00'

上一个答案:

时区很痛苦,这可能是他们选择不将它们包含在日期时间库中的原因.

试试 pytz,它有你要找的 tzinfo:pytz.sourceforge/

您需要首先创建 datetime 对象,然后应用如下所示的时区,然后您的 .isoformat() 输出将根据需要包含 UTC 偏移量:

d = datetime.datetime.utcnow()d_with_timezone = d.replace(tzinfo=pytz.UTC)d_with_timezone.isoformat()

'2017-04-13T14:34:23.111142+00:00'

或者,只使用 UTC,然后抛出一个Z";(对于 Zulu 时区)在末尾标记时区"作为 UTC.

d = datetime.datetime.utcnow() # <-- 获取UTC时间打印 d.isoformat("T") + "Z";

'2017-04-13T14:34:23.111142Z'

I'm trying to generate an RFC 3339 UTC timestamp in Python. So far I've been able to do the following:

>>> d = datetime.datetime.now() >>> print d.isoformat('T') 2011-12-18T20:46:00.392227

My problem is with setting the UTC offset.

According to the docs, the classmethod datetime.now([tz]), takes an optional tz argument where tz must be an instance of a class tzinfo subclass, and datetime.tzinfo is an abstract base class for time zone information objects.

This is where I get lost- How come tzinfo is an abstract class, and how am I supposed to implement it?


(NOTE: In PHP it's as simple as timestamp = date(DATE_RFC3339);, which is why I can't understand why Python's approach is so convoluted...)

解决方案

UPDATE 2021

In Python 3.2 timezone was added to the datetime module allowing you to easily assign a timezone to UTC.

>>> import datetime >>> n = datetime.datetime.now(datetime.timezone.utc) >>> n.isoformat() '2021-07-13T15:28:51.818095+00:00'

previous answer:

Timezones are a pain, which is probably why they chose not to include them in the datetime library.

try pytz, it has the tzinfo your looking for: pytz.sourceforge/

You need to first create the datetime object, then apply the timezone like as below, and then your .isoformat() output will include the UTC offset as desired:

d = datetime.datetime.utcnow() d_with_timezone = d.replace(tzinfo=pytz.UTC) d_with_timezone.isoformat()

'2017-04-13T14:34:23.111142+00:00'

Or, just use UTC, and throw a "Z" (for Zulu timezone) on the end to mark the "timezone" as UTC.

d = datetime.datetime.utcnow() # <-- get time in UTC print d.isoformat("T") + "Z"

'2017-04-13T14:34:23.111142Z'

更多推荐

在 Python 中生成 RFC 3339 时间戳

本文发布于:2023-11-23 14:50:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1621843.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:时间   Python   RFC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!