Если у меня есть строка даты:
$date = "08/20/2009";
И я хочу отделить каждую часть даты:
$m = "08";
$d = "20";
$y = "2009";
Как мне это сделать?
Есть ли специальная функция даты, которую я должен использовать? Или что-то еще?
Спасибо!
Если у меня есть строка даты:
$date = "08/20/2009";
И я хочу отделить каждую часть даты:
$m = "08";
$d = "20";
$y = "2009";
Как мне это сделать?
Есть ли специальная функция даты, которую я должен использовать? Или что-то еще?
Спасибо!
explode
будет делать трюк для этого:
$pieces = explode("/", $date);
$d = $pieces[1];
$m = $pieces[0];
$y = $pieces[2];
В качестве альтернативы вы можете сделать это в одной строке (см. комментарии - спасибо Lucky):
list($m, $d, $y) = explode("/", $date);
Один из способов сделать это:
$time = strtotime($date);
$m = date('m', $time);
$d = date('d', $time);
$y = date('Y', $time);
Откажитесь от функции PHP date_parse. Если вы не уверены, что вход всегда будет в согласованном формате, и вы сначала его проверите, он будет намного более стабильным и гибким (не говоря уже об упрощении), чтобы PHP попытался разобрать формат для вас.
например.
<?php
//Both inputs should return the same Month-Day-Year
print_r(date_parse("2012-1-12 51:00:00.5"));
print_r(date_parse("1/12/2012"));
?>
Если у вас есть данный формат, вы должны использовать объект date.
$date = DateTime::createFromFormat('m/d/Y', '08/20/2009');
$m = $date->format('m');
$d = $date->format('d');
$y = $date->format('Y');
Примечание. Вы можете использовать только один вызов DateTime:: format().
$newFormat = $date->format('d-m-Y');
Всегда ли так? Или это будет в любом виде файла?
Попробуйте strtotime.
Что-то вроде:
if(($iTime = strtotime($strDate))!==false)
{
echo date('m', $iTime);
echo date('d', $iTime);
echo date('y', $iTime);
}
как насчет этого:
list($m, $d, $y) = explode("/", $date);
Быстрый один вкладыш.
Для интернализации синтаксического анализа даты см. IntlDateFormatter:: parse - http://php.net/manual/en/intldateformatter.parse.php
Например:
$f = new \IntlDateFormatter('en_gb', \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE);
$dt = new \DateTime();
$dt->setTimestamp($f->parse('1/2/2015'));
Доминирующий ответ хорош, но IF дата ВСЕГДА в том же формате, который вы могли бы использовать:
$m = substr($date,0,2);
$d = substr($date,3,2);
$y = substr($date,-4);
и не нужно использовать массив или взорваться
Билл H