如果我有一个日期字符串:
$date = "08/20/2009";
我想要分离日期的每个部分:
$m = "08";
$d = "20";
$y = "2009";
我该如何做到呢?
是否有特定的日期函数可以使用?还是其他方法?
谢谢!
一个方法是这样做:
$time = strtotime($date);
$m = date('m', $time);
$d = date('d', $time);
$y = date('Y', $time);
explode
函数可以用来完成这个操作:
$pieces = explode("/", $date);
$d = $pieces[1];
$m = $pieces[0];
$y = $pieces[2];
或者,您可以一行完成它(请参见注释-感谢Lucky):
list($m, $d, $y) = explode("/", $date);
<?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 = DateTime::createFromFormat('m/d/Y', '08/20/2009');
$m = $date->format('m');
$d = $date->format('d');
$y = $date->format('Y');
$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/zh/intldateformatter.parse.php
例如:
$f = new \IntlDateFormatter('en_gb', \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE);
$dt = new \DateTime();
$dt->setTimestamp($f->parse('1/2/2015'));
Dominic的回答很好,但是如果日期始终以相同的格式出现,您可以使用以下方法:
$m = substr($date,0,2);
$d = substr($date,3,2);
$y = substr($date,-4);
而不必使用数组或分裂
Bill H