Подтвердить что ты не робот

Как получить время UTC в Python?

Я искал связку на 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?

4b9b3361

Ответ 1

Попробуйте использовать этот код, который использует datetime.utcnow():

from datetime import datetime
datetime.utcnow()

Для ваших целей, когда вам нужно рассчитать время, потраченное между двумя датами, все, что вам нужно, - это вычесть даты окончания и даты начала. Результатом такой подстройки является объект timedelta.

Из документов python:

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

И это означает, что по умолчанию вы можете получить любое из полей, упомянутых в нем, определение - дней, секунд, микросекунд, миллисекунд, минут, часов, недель. Также экземпляр timedelta имеет метод total_seconds(), который:

Возвращает общее количество секунд, содержащихся в длительности. Эквивалент (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 * 6)/10 * 6, рассчитанных с включенным истинным делением.

Ответ 2

В форме, ближайшей к вашему оригиналу:

import datetime

def UtcNow():
    now = datetime.datetime.utcnow()
    return now

Если вам нужно знать количество секунд с 1970-01-01, а не собственный Python datetime, используйте вместо этого:

return (now - datetime.datetime(1970, 1, 1)).total_seconds()

У Python есть соглашения об именах, которые не согласуются с тем, что вы могли бы использовать в Javascript, см. PEP 8. Кроме того, функция, которая просто возвращает результат другой функции, довольно глупа; если это просто вопрос о том, чтобы сделать его более доступным, вы можете создать другое имя для функции, просто назначив его. Первый пример выше можно заменить на:

utc_now = datetime.datetime.utcnow

Ответ 3

import datetime
import pytz

# datetime object with timezone awareness:
datetime.datetime.now(tz=pytz.utc)

# seconds from epoch:
datetime.datetime.now(tz=pytz.utc).timestamp() 

# ms from epoch:
int(datetime.datetime.now(tz=pytz.utc).timestamp() * 1000) 

Ответ 4

Из datetime.datetime вы уже можете экспортировать в метки времени с помощью метода strftime. Следуя вашему примеру функции:

import datetime
def UtcNow():
    now = datetime.datetime.utcnow()
    return int(now.strftime("%s"))

Если вам нужны микросекунды, вам нужно изменить строку экспорта и привести ее к плавающему типу: return float(now.strftime("%s.%f"))

Ответ 5

В Python 3 с использованием лямбда-выражения попробуйте;

from datetime import datetime
utc_now = lambda : datetime.utcnow()

и вызовите функцию как обычно;

print(utc_now())

Ответ 6

Часовой пояс с нулевыми внешними зависимостями:

from datetime import datetime, timezone

def utc_now():
    return datetime.utcnow().replace(tzinfo=timezone.utc)

Ответ 7

Покажите время UTC или GMT без формата вывода в Python v3.7.2:

import time

print(time.asctime(time.gmtime()))

Выход должен быть:

Fri Feb  1 16:17:06 2019

Ответ 8

Простая стандартная библиотека только для современного Python. Дает дату/время с учетом часового пояса, в отличие от datetime.utcnow(). datetimes без часовых поясов - это несчастные случаи, ожидающие своего появления.

from datetime import datetime,timezone
now_utc = datetime.now(timezone.utc)