2016-06-21 3 views
1

Я пытаюсь получить следующий monday для данной даты, используя strttotime, но я получаю даты от Jan 1970 как выход. Ниже приведена моя строка кода, которая написана для даты получения следующего понедельника, я получил этот код от here. Может кто-нибудь, пожалуйста, помогите мне понять, почему это происходит. Заранее спасибо.php - using strtotime date is to 1970s

Код:

$date_init = date('Y m d', strtotime('next monday', strtotime('2016 06 22'))); 

Ожидаемый результат:

2016 06 27 

Фактический выход:

1970 01 05 

ответ

5

Строка 2016 06 22 не является допустимым форматом даты в соответствии с руководством. Попробуйте добавить дефис:

$date_init = date('Y m d', strtotime('next monday', strtotime('2016-06-22'))); 

Вы можете найти все допустимые форматы даты здесь: http://php.net/manual/en/datetime.formats.date.php

2

Попробуйте это:

$date_init = date('Y m d', strtotime('next monday', strtotime('22-06-2016'))); 

'2016 06 22' необходимо отнести к одному из указанных форматов here

2

2016 06 02 является не один из принятых форматов датыas described in the PHP docs. По этой причине внутренний вызов strtotime возвращает FALSEas defined in the docs в случае, если данная строка времени не может быть проанализирована.

Поскольку это не действительный вход для внешнего strtotime для параметра $now, он принимает эпоху, или 1 Января 1970, в качестве основы для его расчетов.

В результате, вы в конечном итоге со следующего понедельника после 1 января 1970 года

Удаление пробелов из начальной даты строка будет решить эту:

$date_init = date('Y m d', strtotime('next monday', strtotime('20160622')));