【发布时间】:2018-03-16 11:53:34
【问题描述】:
我有一个看似简单的问题,但我找不到直接的答案。我想写一个函数,输入两个字符串,输出一个整数。
在 R 中,函数很简单:
utc_seconds = function(date_string, tz) as.integer(as.POSIXct(date_string, tz = tz))
我控制着date_string 并且知道格式总是正确的,例如2018-02-11 00:00:00,我也知道tz 永远在Olson format。
输入/输出示例:
utc_seconds('2018-02-11 00:00:00', tz = 'Asia/Singapore')
# 1518278400
我查看了datetime、pytz、time 等的各种组合/排列,但无济于事。 This table 看起来很有希望,但最终我无法弄清楚如何使用它。
我已经管理了一个“黑客”如下,但这感觉很无聊(向我的输入字符串添加无关信息):
from dateutil.parser import parse
from dateutil.tz import gettz
parse("2018-02-01 00:00:00 X", tzinfos={'X': gettz('Asia/Singapore')})
# datetime.datetime(2018, 2, 11, 0, 0, tzinfo=tzfile('/usr/share/zoneinfo/Asia/Singapore'))
但我也无法将其设为 UTC 时间。
【问题讨论】:
-
这不是你想要的吗?????? stackoverflow.com/questions/12165691/…
-
不完全是——我没有
datetime对象作为输入(引用答案中的datetime(2012, 8, 28, 19, 33, 50)) -
@UdayrajDeshmukh 可以将答案整合到工作中;感觉很丑,真的是最简单的方法吗?
(pytz.timezone('Asia/Singapore').localize(parse("2018-02-11 00:00:00"), is_dst = None) - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()
标签: python datetime timezone utc