【问题标题】:Convert iso formated string to unix timestamp [duplicate]将iso格式字符串转换为unix时间戳[重复]
【发布时间】:2018-11-12 08:05:13
【问题描述】:

我尝试了以下代码:

>> import dateutil.parser
>>> date=dateutil.parser.parse("2018-11-23T19:0:09Z")
>>> date.strftime("%s")
'1542996009'

但是根据https://www.unixtimestamp.com/index.php,返回值 1542996009 对应于 11/23/2018 @ 6:00pm (UTC),应该是 7:00pm

从 iso-8601 格式的日期字符串中获取 unix 时间戳的正确方法是什么?

注意:Unix 时间戳是自 1970 年 1 月 1 日星期四 00:00:00 协调世界时 (UTC) 以来经过的秒数,所以我认为这是一个时区问题,也就是说 I got 不是 UTC。

【问题讨论】:

  • NeDark,请Useful DOC,我已经发布了答案,但如果可以帮助你接受marm kit。
  • @tripleee 解析部分有效,问题是之后转换为unix时间戳..
  • 我怀疑分钟字段中的错字,但似乎没有任何区别。
  • 认为答案在imperfect time zone semantics的方向,但我现在找不到合适的副本。
  • @tripleee,你的说法是正确的。

标签: python date datetime iso8601 python-datetime


【解决方案1】:

如果您想获取自纪元以来的秒数,您可以使用 python-dateutil 将其转换为 datetime 对象,然后使用 strftime 方法将其转换为秒数。

>>> import dateutil.parser as dp
>>> tm = '2018-11-23T19:0:09Z'
>>> tm1 = parsed_t = dp.parse(tm)
>>> tmseconds = parsed_t.strftime('%s')
>>> tmseconds
'1542979809'

转化率:

>>> datetime.utcfromtimestamp(1542979809).isoformat()
'2018-11-23T13:30:09

'


【讨论】:

  • 你得到的值 1542979809 是 11/23/2018 @ 1:30pm (UTC) 根据unixtimestamp.com/index.php 转换不好
  • 我回答了,我可以补充一下,您的答案中的代码与有问题的代码相同,但无法正常工作......
  • 我认为这里提供的任何见解都应该作为对提议的副本的答案发布,并且 OP 接受的重复提名。
  • @tripleee,我在它被标记为重复困难之前发布了答案,这并不是真正从那里获取的,否则我不应该发布它,我是从我以前在工作中使用的代码中获取的。
猜你喜欢
  • 1970-01-01
  • 2019-10-29
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
相关资源
最近更新 更多