如何将 Hubspot 的午夜日期转换为 UNIX 毫秒 API

How to Convert a Date to UNIX Miliseconds at Midnight for Hubspot API

我正在尝试使用 Python 向 Hubspot API 输入数据。

我的日期格式为 %m%d%Y。我需要将其转换为以毫秒为单位的 UNIX 时间。我相信我已经使用下面的代码设置了那部分。

t = '09/02/2020'
t = datetime.strptime(t, "%m/%d/%Y").strftime("%Y-%m-%dT%H:%M:%S.%f")
ts = time.mktime(datetime.strptime(t, "%Y-%m-%dT%H:%M:%S.%f").timetuple())
ts * 10000
ts = int(ts)

这个例子的最终结果是

t= 2020-09-02T00:00:00.000000

ts = 1599019200

如果我将 ts 的结果放入 https://www.unixtimestamp.com/index.php 它似乎转换为 09/02/2020 @ 4:00am (UTC)

但是 Hubspot 说“日期属性将只存储日期,并且必须设置为你想要的日期的午夜 UTC。”

我迷路的地方是,我不知道如何设置它以便结果始终设置为午夜 UTC,而且我找不到任何可以帮助我做到这一点的示例。

任何人都可以帮助解释如何做到这一点吗?

datetime.timestamp() method which returns date in unixtime 格式,但如果您查看此方法的文档,您会看到:

Note: There is no method to obtain the POSIX timestamp directly from a naive datetime instance representing UTC time. If your application uses this convention and your system timezone is not set to UTC, you can obtain the POSIX timestamp by supplying tzinfo=timezone.utc:

timestamp = dt.replace(tzinfo=timezone.utc).timestamp()

or by calculating the timestamp directly:

timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)

因此,以下文档解决方案是:

from datetime import datetime, timezone, timedelta

t = "09/02/2020"
ts = datetime.strptime(t, "%m/%d/%Y").replace(tzinfo=timezone.utc).timestamp()
# OR
ts = (datetime.strptime(t, "%m/%d/%Y") - datetime(1970, 1, 1)).total_seconds()