2014-01-18 2 views
0

по какой-то причине это дает мне странное время:Unix штамп времени форматирования

date_default_timezone_set('Europe/London'); 
$todaysdate = date('d-m-y h:i:s a', time()); 
$todaysdatestring = strtotime($todaysdate); 

Это возвращает мне время в 2018.

например 1515889804

Кажется, что это время как месяц/год/дата.

Какой я не могу понять ...

Любые идеи?

ответ

0

Я не знаю, чего вы пытаетесь достичь здесь, но если вы измените d-m-y h:i:s a на d-m-Y h:i:s a, он даст вам правильную дату.

date_default_timezone_set('Europe/London'); 
$todaysdate = date('d-m-Y h:i:s a', time()); 
$todaysdatestring = strtotime($todaysdate); 

, но если вы хотите, чтобы получить текущую метку времени, почему бы вам не просто использовать time().

0
date_default_timezone_set('Europe/London'); 
$todaysdate = date('m/d/y h:i:s a', time()); 
$todaysdatestring = strtotime($todaysdate); 

var_dump(time(), $todaysdate, strtotime($todaysdate)); 

Я изменил «d-m-y» на «m/d/y».

Я не знаю точной терминологии и стандартов ИСО для времени и форматов даты, но в Eclipse сказал, что strtotime хочет «English Dateformat».

PHP Version 5.3.28

+0

РНР руководство Резюме немного вводит в заблуждение. Если разделитель является косой чертой, strtotime принимает американский формат, если разделитель является тире или точками, тогда strtotime принимает европейский формат. Англичане используют как косые черты, так и европейский формат. – dsas

0

Когда strtotime() функция анализирует вашу DATETIME строку 18-01-14 01:00:44 am, предполагается, что число 18 является год, 01 месяц и 14 день (формат Y-m-d); вот почему вы получаете временную метку unix на 2018 год. См. here какие форматы даты функционируют strtotime().

Проверить, как strtotime() функция анализирует время, см. date_parse() Функция, например: print_r(date_parse($todaysdate));. demo

Если вы хотите преобразовать неизвестный формат использования временных меток DateTime::createFromFormat():

$dt = DateTime::createFromFormat('d-m-y h:i:s a', '18-01-14 01:00:44 am'); 
echo $dt->getTimestamp(); # or $dt->format('U'); 

demo

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