Przeszukałem grupę na StackExchange w poszukiwaniu rozwiązania, ale nic nie robi tego, czego potrzebuję. W JavaScript używam następujących do obliczania czasu UTC od 1 stycznia 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;
}
Jaki byłby równoważny kod w Pythonie?
Odpowiedzi:
Wypróbuj ten kod, który używa datetime.utcnow () :
Jeśli chcesz obliczyć ilość czasu spędzonego między dwiema datami, wystarczy odjąć datę końcową i początkową. Wynikiem takiego odejmowania jest obiekt timedelta.
Z dokumentacji Pythona:
A to oznacza, że domyślnie możesz otrzymać dowolne z pól wymienionych w jego definicji - dni, sekundy, mikrosekundy, milisekundy, minuty, godziny, tygodnie. Instancja timedelta ma również metodę total_seconds (), która:
źródło
W formie najbliższej oryginałowi:
Jeśli chcesz znać liczbę sekund z 1970-01-01, a nie natywny Python
datetime
, użyj tego:Python ma konwencje nazewnictwa, które są sprzeczne z tym, do czego możesz być przyzwyczajony w JavaScript, zobacz PEP 8 . Ponadto funkcja, która po prostu zwraca wynik innej funkcji, jest raczej głupia; jeśli chodzi tylko o uczynienie jej bardziej dostępną, możesz utworzyć inną nazwę dla funkcji, po prostu ją przypisując. Pierwszy powyższy przykład można zastąpić:
źródło
tzinfo
obiektów, nawet dla UTC.Prosta, standardowa biblioteka tylko dla nowoczesnego Pythona. W przeciwieństwie do tego, podaje datę i godzinę uwzględniającą strefę czasową
datetime.utcnow()
.datetimes
bez stref czasowych zdarzają się wypadki.źródło
źródło
Z datetime.datetime można już eksportować do znaczników czasu metodą strftime. Zgodnie z przykładem funkcji:
Jeśli chcesz mikrosekund, musisz zmienić ciąg eksportu i rzutować na zmiennoprzecinkowy:
return float(now.strftime("%s.%f"))
źródło
time.time()
, możesz również użyć time.mktime (now.timetuple ()), aby przekonwertować bezpośrednio na int. W każdym razie w tym prostym przypadkutime.time()
jest to również ważna opcja. To, co wydaje mi się dziwne, to bieganie przez timedelta, aby znaleźć sekundy.strftime("%s")
jest to zależne od platformy i nie działa w systemie Windows. (Przynajmniej nie dla mnie na Windows 10).Świadomość strefy czasowej bez zewnętrznych zależności:
źródło
W Pythonie 3 używając wyrażenia lambda, wypróbuj;
i wywołaj funkcję normalnie;
źródło