Как преобразовать дату в миллисекунды UNIX в полночь для Hubspot API

Я пытаюсь ввести данные в API Hubspot, используя Python.

У меня есть даты в формате %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, он преобразуется в 02.09.2020 в 4:00 (UTC)

Однако Hubspot говорит: «Свойства даты будут хранить только дату и должны быть установлены на полночь UTC для нужной вам даты».

Где я потерялся, так это в том, что я не знаю, как настроить это так, чтобы результат всегда устанавливался на полночь UTC, и я не могу найти никаких примеров, которые помогли бы мне это сделать.

Кто-нибудь может помочь объяснить, как это сделать?

Ts * 10000 -- Вы имели в виду ts = ts * 10000. Вы можете записать это как ts *= 10000

Aaj Kaal 18.12.2020 19:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
513
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Существует метод datetime.timestamp() , который возвращает дату в формате unixtime, но если вы заглянете в документацию этого метода, то увидите:

Примечание. Не существует способа получить временную метку POSIX непосредственно из наивного экземпляра datetime, представляющего время UTC. Если ваше приложение использует это соглашение, а системный часовой пояс не установлен в UTC, вы можете получить временную метку POSIX, указав tzinfo=timezone.utc: timestamp = dt.replace(tzinfo=timezone.utc).timestamp() или путем прямого вычисления метки времени: 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()

Другие вопросы по теме