Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konwersja ciągu znaków DateTime w Pythonie na liczby całkowite w milisekundach

[Edytowano zgodnie z sugestią w komentarzach]

Korzystanie z Ben Alpert odpowiedź na Jak mogę przekonwertować obiekt datetime na milisekundy od epoki (czas uniksowy) w Pythonie możemy wykonać następujące czynności:

from datetime import datetime
def unix_time(dt):
    epoch = datetime.utcfromtimestamp(0)
    delta = dt - epoch
    return delta.total_seconds()

def unix_time_millis(dt):
    return int(unix_time(dt) * 1000)

a = datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ")
unix_time_millis(a)

zwraca:

1435371005653

co odpowiada:Sob, 27 czerwca 2015 02:10:05 GMT (zgodnie z oczekiwaniami)

Możemy również użyć .strftime('%s') z datetime aby uzyskać czas uniksowy, nawet milisekundy, korzystając z poniższych (ale nie jest to zalecane ):

from decimal import Decimal

int(Decimal(datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ").strftime('%s.%f'))*1000)

zwraca:

1435396205653

odpowiednik:Sob, 27 czerwca 2015 09:10:05 GMT (na moim Macu w San Diego; Uwaga) :to 7 godzin mniej niż mogliśmy się spodziewać).

Przyczynę błędu opisał J.F. Sebastian w komentarzach do powyższego linku oraz w tym odpowiedź dotycząca .strftime('%s') zachowanie. J.F. Sebastian wskazuje, że „nie jest obsługiwany, nie jest przenośny, może dyskretnie generować błędny wynik dla świadomego obiektu daty i godziny, nie powiedzie się, jeśli dane wejściowe są w UTC (jak w pytaniu), ale lokalna strefa czasowa nie jest UTC”



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć zduplikowane rekordy w MySQL

  2. PHP-MYSQL:Konwersja uniksowego znacznika czasu na datę i godzinę i na odwrót

  3. Usuń klauzulę DEFINER ze zrzutów MySQL

  4. Nie można wybrać grupowania wierszy według created_at

  5. Nie można utworzyć tabeli w mysql -Błąd 1064