sql >> Database >  >> RDS >> Mysql

Conversie van Python DateTime-tekenreeks in gehele milliseconden

[Bewerkt volgende suggestie in de reacties]

Ben Alpert's gebruiken antwoord op Hoe kan ik een datetime-object converteren naar milliseconden sinds epoch (unix-tijd) in Python we kunnen het volgende doen:

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)

retourneert:

1435371005653

wat gelijk is aan:Zat, 27 Jun 2015 02:10:05 GMT (zoals verwacht)

We kunnen ook de .strftime('%s') . van datetime gebruiken om Unix-tijd te krijgen, zelfs milliseconden met het volgende (maar dit wordt niet geadviseerd ):

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)

retourneert:

1435396205653

gelijk aan:Zat, 27 Jun 2015 09:10:05 GMT (op mijn mac in San Diego; Opmerking :dit is 7 uur minder dan we misschien hadden verwacht).

De oorzaak van de fout wordt beschreven door J.F. Sebastian in de opmerkingen van de link hierboven en in dit antwoord met betrekking tot .strftime('%s') gedrag. J.F. Sebastian wijst erop dat "het niet wordt ondersteund, het is niet draagbaar, het kan stilletjes een verkeerd resultaat produceren voor een bewust datetime-object, het mislukt als de invoer in UTC is (zoals in de vraag) maar de lokale tijdzone is geen UTC"



  1. Implementatie van het Hacker News ranking-algoritme in SQL

  2. Wat is de beste manier om decimale / dubbele / zwevende waarden te binden met PDO in PHP?

  3. mysql join ON en AND om welsprekend te laravel

  4. Over mysql-cursor en iterator