Datetime To Unix timestamp

Есть ли кто-нибудь, сидящий на PHP-функции, для преобразования даты формата 0000-00-00 00:00:00 (datetimesql) в временную метку unix?

Для этого в PHP 5.2 вы можете сделать это:

$datetime = new DateTime(); echo $datetime->format('U'); 

Более новый способ сделать это с PHP 5.3:

 $datetime = new DateTime(); echo $datetime->getTimestamp(); 

Еще один вариант, когда вы отметили этот вопрос SQL: функции MySQL FROM_UNIXTIME и UNIX_TIMESTAMP -> руководство MySQL

 SELECT UNIX_TIMESTAMP (datetime_column) FROM table

Обычно это быстрее, чем вызов функции PHP.

@bartek – Как вы заметили, функция strtotime PHP идеально подходит для этого. Он может обрабатывать наиболее распространенные форматы даты, включая строки, такие как «завтра» или «+5 месяцев».

Используйте strptime() чтобы проанализировать время и превратить его в структурированный массив.

Затем передайте результаты этого в функцию mktime() чтобы получить отметку времени UNIX.

У меня есть решение для вас прямо здесь:

 /* From MySQL datetime to Unix Timestamp 2003-12-30 23:30:59 -> 1072834230 */ function convertMysqlDateTimeToUnixTimeStamp($date) { $yr=strval(substr($date,0,4)); $mo=strval(substr($date,5,2)); $da=strval(substr($date,8,2)); $hr=strval(substr($date,11,2)); $mi=strval(substr($date,14,2)); $se=strval(substr($date,17,2)); return mktime($hr,$mi,$se,$mo,$da,$yr); } в /* From MySQL datetime to Unix Timestamp 2003-12-30 23:30:59 -> 1072834230 */ function convertMysqlDateTimeToUnixTimeStamp($date) { $yr=strval(substr($date,0,4)); $mo=strval(substr($date,5,2)); $da=strval(substr($date,8,2)); $hr=strval(substr($date,11,2)); $mi=strval(substr($date,14,2)); $se=strval(substr($date,17,2)); return mktime($hr,$mi,$se,$mo,$da,$yr); } 

Попробуйте strptime .

Encapusulating решение wvanbergen в функцию (для вашего удобства)

 //Convert SQL datetime to unixtime -- by johnboiles function datetimeToUnixtime($datetime){ $result = mysql_query("select unix_timestamp('$datetime')"); $unixtime = mysql_fetch_array($result); return $unixtime[0]; }