2017-02-20 14 views
1

У меня есть микросекунда timestamp = 1484923604957, и я хочу создать объект DateTime или только дату, а затем установить в db в таблице со столбцом created_at - datetime. Я не хочу, чтобы поле типа изменения в БД. Теперь я конвертировать на сегодняшний день, как этотphp microseconds конвертировать в DateTime и обратно

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

и в БД есть 2017-01-20 14:46:44

и тогда, когда получают имеют дату без микросекунд

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

я создаю DateTime

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

и в ответ

$dateTimeClass->getTimestamp()*1000 

это последние микросекунды

Как правильно конвертировать в DatTime (или дату) с микросекундами и обратно микросекунды?

ответ

0

Вам необходимо изменить тип поля db для created_at - DATETIME - DATETIME(6) для микросекунд. Без этого вы не получите точное время в микросекундах, так как оно не будет храниться в базе данных.

+0

У меня есть тип '' created_at' datetime NOT NULL, 'какой тип DATETIME (6) и как его изменить? –

+0

@ shuba.ivan ссылается на этот http://stackoverflow.com/questions/26299149/timestamp-with-a-millisecond-precision-how-to-save-them-in-mysql –

0

Вы можете использовать $dateTime->format('u') для преобразования вашего объекта в микросекунды, если он был создан с помощью микросекунд. См. the documentation for date.

Microseconds (добавлено в PHP 5.2.2). Обратите внимание, что date() всегда будет генерировать 000000, поскольку он принимает целочисленный параметр, тогда как DateTime :: format() поддерживает микросекунды, если DateTime была создана с микросекундами.

+0

В db '2017-01-20 14 : 46: 44.000000', затем '$ dateTime-> format ('u') => result = 000000', но нужно как' timestamp = 1484923604957' –

+0

Если вы хотите создать временную метку эпохи, вы можете использовать 'format ('U')' – nvisser

 Смежные вопросы

  • Нет связанных вопросов^_^