Eu pesquisei um monte no StackExchange por uma solução, mas nada faz exatamente o que preciso. Em JavaScript, estou usando o seguinte para calcular a hora UTC desde 1º de janeiro de 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;
}
Qual seria o código Python equivalente?
Respostas:
Experimente este código que usa datetime.utcnow () :
Para seus propósitos, quando você precisa calcular a quantidade de tempo gasto entre duas datas, tudo o que você precisa é subtrair as datas de início e término. O resultado de tal subtração é um objeto timedelta.
Dos documentos do python:
E isso significa que, por padrão, você pode obter qualquer um dos campos mencionados em sua definição - dias, segundos, microssegundos, milissegundos, minutos, horas, semanas. Além disso, a instância timedelta tem o método total_seconds () que:
fonte
Na forma mais próxima do seu original:
Se você precisar saber o número de segundos de 01/01/1970, em vez de um Python nativo
datetime
, use o seguinte:Python tem convenções de nomenclatura que estão em desacordo com o que você costuma usar em Javascript, consulte PEP 8 . Além disso, uma função que simplesmente retorna o resultado de outra função é bastante tola; se for apenas uma questão de torná-la mais acessível, você pode criar outro nome para uma função simplesmente atribuindo-o. O primeiro exemplo acima pode ser substituído por:
fonte
tzinfo
objeto, mesmo para UTC.Simples, biblioteca padrão apenas, para python moderno. Dá data e hora com reconhecimento de fuso horário, ao contrário
datetime.utcnow()
.datetimes
sem fusos horários, os acidentes estão esperando para acontecer.fonte
fonte
De datetime.datetime, você já pode exportar para carimbos de data / hora com o método strftime. Seguindo seu exemplo de função:
Se quiser microssegundos, você precisa alterar a string de exportação e converter para flutuar como:
return float(now.strftime("%s.%f"))
fonte
time.time()
. Você também pode usar time.mktime (now.timetuple ()) para converter diretamente para int. Enfim, para este caso simplestime.time()
também é uma opção válida. O que eu acho estranho, é passar pelo timedelta até achar os segundos.strftime("%s")
depende da plataforma e não funciona no Windows. (Pelo menos não para mim no Windows 10).Fuso horário ciente com zero dependências externas:
fonte
Em Python 3 usando a expressão lambda, experimente;
e chamar a função normalmente;
fonte