2017-02-20 5 views
1

Ich habe Mikrosekunde timestamp = 1484923604957 und ich möchte DateTime Objekt oder nur Datum erstellen, für dann in db in Tabelle mit Spalte created_at - datetime gesetzt. Ich möchte nicht das Typfeld in DB ändern. Jetzt wandle ich bisher wie diesePHP Mikrosekunden konvertieren in DateTime und zurück

 $seconds = $mil/1000; 
    return date("Y-m-d H:i:s", $seconds); 

und in DB haben 2017-01-20 14:46:44

und dann, wenn haben erhalten Datum ohne Mikrosekunden

created_at = "2016-12-29 14:42:05" 

Ich schaffe Datetime

 $dateTimeClass = date_create_from_format('Y-m-d H:i:s', $date); 
    return $dateTimeClass; 

und in Antwort

ist diese letzte Mikrosekunde

Wie DatTime (oder Datum) zu korrigieren konvertieren mit Mikrosekunden und zurück in Mikrosekunden?

Antwort

0

Sie müssen den db-Feldtyp für created_at - DATETIME in DATETIME(6) für Mikrosekunden ändern. Ohne dass Sie die genaue Zeit in Mikrosekunden nicht bekommen, da es nicht in der Datenbank gespeichert wird.

+0

Ich habe Typ '' created_at' datetime NOT NULL, 'welcher Typ ist es DATETIME (6) und wie ändert man? –

+0

@ shuba.ivan verweisen diese http://stackoverflow.com/questions/26299149/timestamp-with-a-millisecond-precision-how-to-save-the-in-mysql –

0

Sie können $dateTime->format('u') verwenden, um Ihr Objekt in Mikrosekunden zu konvertieren, wenn es in Mikrosekunden erstellt wurde. Bitte beachten Sie the documentation for date.

Mikrosekunden (hinzugefügt in PHP 5.2.2). Beachten Sie, dass date() immer 000000 generiert, da es einen Integer-Parameter benötigt, während DateTime :: format() Mikrosekunden unterstützt, wenn DateTime mit Mikrosekunden erstellt wurde.

+0

In db '2017-01-20 14 : 46: 44.000000' dann '$ dateTime-> format ('u') => result = 000000' aber benötigt wie' timestamp = 1484923604957' –

+0

Wenn du einen Epochenzeitstempel willst, kannst du 'format ('U')' verwenden – nvisser

Verwandte Themen