W moim kodzie używam obiektów DateTime
do manipulowania datami, a następnie konwertowania ich na znaczniki czasu w celu ich zapisania w niektórych plikach JSON.DateTime z mikrosekundami
Z pewnych powodów chcę mieć to samo co DateTime (lub coś bliskiego), ale z dokładnością mikrosekund (które konwertowałem by unosić podczas wstawiania wewnątrz plików JSON).
Moje pytanie brzmi: czy istnieje obiekt PHP że jest jak DateTime
, ale może obsłużyć mikrosekund też?
Celem jest umożliwienie manipulowania mikrotimes z obiektami.
W dokumentacji date() jest coś, co wskazuje, że DateTime można utworzyć z mikrosekund, ale nie byłem w stanie znaleźć.
u Microseconds (dodane w PHP 5.2.2). Zauważ, że date() zawsze będzie generować 000000, ponieważ pobiera parametr integer, natomiast DateTime :: format() obsługuje mikrosekundy, jeśli DateTime został utworzony z mikrosekundami.
Próbowałem ustawić znacznik czasu DateTime obiektu o wartości pływającego (microtime(true)
), ale to nie działa (myślę, że konwertuje znacznik czasu do int, powodując utratę mikrosekund).
Oto jak próbowałem
$dt = new DateTime();
$dt->setTimestamp(3.4); // I replaced 3.4 by microtime(true), this is just to give an example
var_dump($dt);
var_dump($dt->format('u'));
The .4
nie jest brane pod uwagę, jak można zobaczyć tutaj (chociaż możemy użyć formatu na u
, która odpowiada mikrosekund).
object(DateTime)[1]
public 'date' => string '1970-01-01 01:00:03' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)
string '000000' (length=6)
EDIT: Widziałem ten kod, który pozwala na dodanie mikrosekund do DateTime, ale muszę zastosować wiele modyfikacji microtime przed utworzeniem DateTime. Ponieważ wykorzystam to dużo, chcę zrobić jak najmniej zmian w mikrotime, zanim otrzymam "obiekt mikrotomowy".
$d = new DateTime("15-07-2014 18:30:00.111111");
Twoje pytanie właśnie stało się vaque, czego szukasz? – davejal
Szukam skutecznego sposobu przechowywania dat za pomocą mikrosekund, z tymi samymi możliwościami (porównywanie, formatowanie itp.) Jako DateTime. –
zapisz je w db Zakładam, który? – davejal