PHP从变量得到年

问题描述:

我通常搞砸了,但我试图从一个变量得到一年$date = 2011-01-01我想从变量得到2011 ......我试过这个,但它没有回应任何东西。 ..PHP从变量得到年

date(strtotime("Y"), strtotime($date)); 

$year = date('Y', strtotime('2011-01-01')); 

或者,如果你不想转换为日期,并相信您的输入格式:

$year = explode('-', '2011-01-01')[0]; 

以上需要PHP 5.4,在旧版本中,你需要两行:

$year = substr($date, 0, 4); 
$arr = explode('-', '2011-01-01'); 
$year = $arr[0]; 

或者然而,这稍微快一些可替代的tigrang建议

或者,更快的方式,因为salathe建议:

$year = (int) $date; 

(一切的第一个破折号会被忽略后,所以$year将包含日期的年份部分的整数(不像其他的选项,其中$year将是一个字符串)。

+0

或'$ =一年SUBSTR($日期,0,4);'是sliiiightly更快;) – tigrang

+0

@tigrang感谢,补充说答案了。 – bfavaretto

+1

或'$ year =(int)$ date;'being * waaaaaaaay *更快(对于微小的* way *值) – salathe

date('Y', strtotime($date))应该做

第一个参数是格式,二是时间戳。

可能我建议使用PHP的DateTime class作为一种替代方案:

$date = '2011-01-01'; 
$dateTime = new DateTime($date); 

echo $dateTime->format('Y'); 

DateTime是一切都很好,但让我们去老同学。

sscanf($date, '%d', $year); 
// or 
$year = strtok($date, '-'); 
// or 
$year = substr($date, 0, 4); 
// or 
$year = (int) $date; 

,把帽子懂事回,你可以使用DateTime或正确使用date()

$datetime = new DateTime($date); 
$year = $datetime->format('Y'); 
// or 
$year = date('Y', strtotime($date)); 

您可以将日期分解为列表并单独调用每个日期项目。

$date = '2012-01-01'; 
list($year, $month, $day) = explode('-', $date); 

echo $year; // echoes 2012