Использование Date & StrToTime - PullRequest
0 голосов
/ 13 января 2011

Я использовал следующий бит кода без каких-либо проблем, пока он, наконец, не попал на сервер Windows и не решил выдать ошибку:

$date = date('F d, Y', $data->e_date)
date($time_format, strtotime($date.' '.$data->e_time))

* (e_date хранится так: «1293559200", и e_time хранится так:" 18:00 ") *

Ошибка такова:

date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in ...

Насколько я понимаю, это потому, что я использую strtotimeв функции даты .Итак, что меня интересует, что это за элегантный метод решения или переписывания этого?

Должен ли я передавать все время strtotime в новую переменную, т.е.?

Спасибо!

1 Ответ

0 голосов
/ 13 января 2011

Вы используете UNIX TIMESTAMP, он не будет работать должным образом в системах Windows OS.

Попробуйте преобразовать его, используя эту функцию.конвертировать 20031230233029 в 30.12.2003 23:30:59

function mysql_timestamp_para_humano($dt) {
    $yr=strval(substr($dt,0,4));
    $mo=strval(substr($dt,4,2));
    $da=strval(substr($dt,6,2));
    $hr=strval(substr($dt,8,2));
    $mi=strval(substr($dt,10,2));
    $se=strval(substr($dt,12,2)); 
    return date("d/m/Y H:i:s", mktime ($hr,$mi,$se,$mo,$da,$yr));
}

или эту

function timestamp_para_humano($ts) {
    $d=getdate($ts);
    $yr=$d["year"];
    $mo=$d["mon"];
    $da=$d["mday"];
    $hr=$d["hours"];
    $mi=$d["minutes"];
    $se=$d["seconds"];
    return date("d/m/Y", mktime($hr,$mi,$se,$mo,$da,$yr));
}

или вы можете попытаться преобразовать метку времени unix в метку времени mysql с помощью этой другой функции

function timestamp_para_mysql_timestamp($ts) {
    $d=getdate($ts);
    $yr=$d["year"];
    $mo=$d["mon"];
    $da=$d["mday"];
    $hr=$d["hours"];
    $mi=$d["minutes"];
    $se=$d["seconds"];
    return sprintf("%04d%02d%02d%02d%02d%02d",$yr,$mo,$da,$hr,$mi,$se);
}
...