Я много раз искал решение на StackExchange, но ничего не помогло. В JavaScript я использую следующее для расчета времени UTC с 1 января 1970 года:
function UtcNow() {
var now = new Date();
var utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
return utc;
}
Каким был бы эквивалентный код Python?
Ответы:
Попробуйте этот код, который использует datetime.utcnow () :
Для ваших целей, когда вам нужно рассчитать количество времени, потраченного между двумя датами, все, что вам нужно, это вычесть даты окончания и начала. Результатом такого вычитания является объект timedelta.
Из документов python:
А это означает, что по умолчанию вы можете получить любое из полей, упомянутых в его определении - дни, секунды, микросекунды, миллисекунды, минуты, часы, недели. Также экземпляр timedelta имеет метод total_seconds (), который:
источник
В форме, наиболее близкой к вашему оригиналу:
Если вам нужно знать количество секунд с 1970-01-01, а не на родном Python
datetime
, используйте вместо этого:У Python есть соглашения об именах, которые расходятся с тем, к чему вы, возможно, привыкли в Javascript, см. PEP 8 . Кроме того, функция, которая просто возвращает результат другой функции, довольно глупа; если нужно просто сделать его более доступным, вы можете создать другое имя для функции, просто назначив его. Первый пример выше можно заменить на:
источник
tzinfo
объектов даже для UTC.Только простая стандартная библиотека для современного Python. Предоставляет дату и время с учетом часового пояса, в отличие от
datetime.utcnow()
.datetimes
без часовых поясов ждут аварии.источник
источник
Начиная с datetime.datetime вы уже можете экспортировать в метки времени с помощью метода strftime. Следуя вашему примеру функции:
Если вам нужны микросекунды, вам нужно изменить строку экспорта и привести ее к float, например:
return float(now.strftime("%s.%f"))
источник
time.time()
Вы также можете использовать time.mktime (now.timetuple ()) для преобразования непосредственно в int. Во всяком случае, для этого простого случаяtime.time()
тоже допустимый вариант. Что мне показалось странным, так это то, что timedelta ищет секунды.strftime("%s")
это зависит от платформы и не работает в Windows. (По крайней мере, для меня это не так в Windows 10).Информация о часовом поясе с нулевыми внешними зависимостями:
источник
В Python 3 с использованием лямбда-выражения попробуйте;
и вызвать функцию в обычном режиме;
источник