Есть ли кто-нибудь, сидящий на PHP-функции для преобразования даты формата 0000-00-00 00:00:00 (datetimesql) в временную метку unix?
Datetime To Unix timestamp
Ответ 1
Для этого в PHP 5.2 вы можете сделать это:
$datetime = new DateTime();
echo $datetime->format('U');
Более новый способ сделать это с PHP 5.3:
$datetime = new DateTime();
echo $datetime->getTimestamp();
Ответ 2
Еще один вариант, по которому вы задали этот вопрос с помощью SQL: функции MySQL FROM_UNIXTIME
и UNIX_TIMESTAMP
→ руководство по MySQL
SELECT UNIX_TIMESTAMP(datetime_column) FROM table
Это обычно быстрее, чем вызов функции PHP.
Ответ 3
@bartek - Как вы заметили, функция PHP strtotime идеально подходит для этого. Он может обрабатывать наиболее распространенные форматы даты, включая строки, такие как "завтра" или "+5 месяцев".
Ответ 4
Используйте strptime()
, чтобы проанализировать время и превратить его в структурированный массив.
Затем передайте результаты этого в функцию mktime()
, чтобы получить отметку времени UNIX.
Ответ 5
У меня есть решение для вас прямо здесь:
/* 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);
}
Ответ 6
Попробуйте strptime.
Ответ 7
Encapusulating wvanbergen solution в функцию (для вашего удобства)
//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];
}