2013-12-01 7 views
1

Я пытаюсь преобразовать 2 даты в метку времени. Один генерируется PHP (текущая дата), а другой вводится пользователемphp конвертировать дату в метку времени

$today = date("d-m-y"); // 01-12-13 
$start_date = "28-11-13"; 

$todaytimestamp = strtotime($today); 
$starttimestamp = strtotime($start_date); 

echo "$today > $start_date <br>$todaytimestamp > $starttimestamp"; 

Проблема заключается в том, что результат неверны

Результат:

01-12-13> 28 -11-13 1008201600> 1857686400

что не так?

ответ

3

Всегда используйте четырехзначные годы, поскольку использование двузначных лет приводит к бесконечным головным болям. 13 не рассматривается как год; вместо этого 01-12-13 и 28-11-13 интерпретируются как 13 декабря 2001 года и 13 ноября 2028 года PHP. См. «PHP's Date Formats page» в разделе «Обозначения ISO8601»: «Двухзначный год, месяц и день с тире».

Если вы используете 2013 вместо этого, проблемы исчезают:

$today = date("d-m-Y"); // 01-12-2013 
$start_date = "28-11-2013"; 

$todaytimestamp = strtotime($today); 
$starttimestamp = strtotime($start_date); 

echo "$today > $start_date <br>$todaytimestamp > $starttimestamp"; 

Выход:

01-12-2013 > 28-11-2013 
1385884800 > 1385625600 
0

Мое понимание документации заключается в том, что вы пытаетесь преобразовать читаемую строку в метку времени на основе Unix. При попытке конвертировать 01-12-13 и 28-11-13 вы получите нежелательные результаты, потому что функция strtotime не имеет воспоминаний о том, как правильно интерпретировать эти значения. Что-то в соответствии с приведенным ниже кодом должно помочь вам.

$today = date("jS M Y"); // 1st Dec 2013 
$start_date = "28th Nov 2013"; 

$todaytimestamp = strtotime($today); 
$starttimestamp = strtotime($start_date); 

echo "$today > $start_date <br>$todaytimestamp > $starttimestamp"; 

выход

1st Dec 2013 > 28th Nov 2013 
1385877600 > 1385618400 

Просто настроить свой код, чтобы соответствовать в пределах ограничений языка, и если эти значения выходят из поля формы, вы должны быть в состоянии быстро и легко конвертировать их в машиночитаемом Дата.

0

Функция предполагает, что вы начинаете с года (проверьте: http://www.onlineconversion.com/unix_time.htm), изменение

$start_date = "28-11-2013"; 

Таким образом, функция знает который является годом, он принимает по умолчанию foramt, который (если не ошибочно) Y-d-m

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