Вы можете использовать DateTime::createFromFormat()
(как и другие ответы уже упоминалось). Однако вы должны обратить внимание на некоторые мелкие детали.
Поскольку вы разбираете строку, содержащую частичную дату (указаны только месяц и год), остальные поля (день месяца, час, минута, секунда) устанавливаются по умолчанию с использованием текущего время. Скорее всего, это не то, что вы хотите. Наверное, вы хотите начать месяц (1 день, в полночь).
Вы можете получить это, поставив восклицательный знак (!
) перед format string. Он сбрасывает все компоненты даты в эпоху Unix (1970-01-01 00:00:00 UTC).
Также необходимо использовать третий параметр DateTime::createFromFormat()
. Если вы его не передадите, PHP использует часовой пояс по умолчанию, установленный в php.ini
, или по последнему вызову date_default_timezone_set()
(если таковой был). Это может быть или не быть тем, что вам нужно.
$followUpDate = 'M12-16';
// It seems like your timezone is US/Eastern (GMT+5 during the winter)
$timezone = new DateTimeZone('US/Eastern');
// Create a DateTime out of the provided string
// The "!" character in front of the format resets all the fields
// to the Unix epoch (1970-01-01 00:00:00 UTC) before parsing the string
$date = DateTime::createFromFormat('!\Mm-y', $followUpdate, $timezone);
// Display it; it displays 1480568400
echo($date->format("U"));