首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以Python表示的ISO时间(ISO 8601)

以Python表示的ISO时间(ISO 8601)
EN

Stack Overflow用户
提问于 2010-01-28 06:22:37
回答 15查看 506K关注 0票数 488

我有一份文件。在Python语言中,我希望利用它的创建时间,将它转换为ISO time (ISO 8601) string ,同时保留它是在 (ET)中创建的这一事实。

如何获取文件的ctime并将其转换为指示东部时区的ISO时间字符串(并在必要时考虑夏令时)?

EN

回答 15

Stack Overflow用户

发布于 2015-01-26 17:14:36

本地到ISO 8601:

代码语言:javascript
复制
import datetime
datetime.datetime.now().isoformat()
>>> 2020-03-20T14:28:23.382748

UTC到ISO 8601:

代码语言:javascript
复制
import datetime
datetime.datetime.utcnow().isoformat()
>>> 2020-03-20T01:30:08.180856

无微秒的ISO 8601本地:

代码语言:javascript
复制
import datetime
datetime.datetime.now().replace(microsecond=0).isoformat()
>>> 2020-03-20T14:30:43

协调世界时到带有TimeZone信息的ISO8601(Python3):

代码语言:javascript
复制
import datetime
datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat()
>>> 2020-03-20T01:31:12.467113+00:00

不含微秒的本地TimeZone信息的国际标准化组织标准8601(Python第三版):

代码语言:javascript
复制
import datetime
datetime.datetime.now().astimezone().replace(microsecond=0).isoformat()
>>> 2020-03-20T14:31:43+13:00

本地到具有TimeZone信息的ISO8601(Python3):

代码语言:javascript
复制
import datetime
datetime.datetime.now().astimezone().isoformat()
>>> 2020-03-20T14:32:16.458361+13:00

请注意,在协调世界时使用 astimezone() 时存在错误。这会产生一个不正确的结果:

代码语言:javascript
复制
datetime.datetime.utcnow().astimezone().isoformat() #Incorrect result

有关Python 2,请参见和使用pytz

票数 839
EN

Stack Overflow用户

发布于 2015-12-01 03:04:54

下面是我用来转换为XSD日期时间格式的代码:

代码语言:javascript
复制
from datetime import datetime
datetime.now().replace(microsecond=0).isoformat()
# You get your ISO string

我在查找XSD date time format (xs:dateTime)时遇到了这个问题。我需要从isoformat中删除微秒。

票数 74
EN

Stack Overflow用户

发布于 2010-12-17 00:20:25

ISO8601时间表示法

国际标准ISO8601描述了日期和时间的字符串表示。这种格式的两个简单示例如下

代码语言:javascript
复制
2010-12-16 17:22:15
20101216T172215

(两者都代表2010年12月16日),但该格式还允许亚秒级的分辨率时间并指定时区。这种格式当然不是特定于Python的,但它非常适合以可移植的格式存储日期和时间。有关此格式的详细信息,请参阅Markus Kuhn entry

我建议使用这种格式在文件中存储时间。

在此表示中获取当前时间的一种方法是使用Python标准库中的time模块中的strftime:

代码语言:javascript
复制
>>> from time import strftime
>>> strftime("%Y-%m-%d %H:%M:%S")
'2010-03-03 21:16:45'

您可以使用datetime类的strptime构造函数:

代码语言:javascript
复制
>>> from datetime import datetime
>>> datetime.strptime("2010-06-04 21:08:12", "%Y-%m-%d %H:%M:%S")
datetime.datetime(2010, 6, 4, 21, 8, 12)

最健壮的是Egenix mxDateTime模块:

代码语言:javascript
复制
>>> from mx.DateTime.ISO import ParseDateTimeUTC
>>> from datetime import datetime
>>> x = ParseDateTimeUTC("2010-06-04 21:08:12")
>>> datetime.fromtimestamp(x)
datetime.datetime(2010, 3, 6, 21, 8, 12)

参考

票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2150739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档