3

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

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

5 回答 5

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

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

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

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

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

或者,tigrang 建议的这个稍快的替代方案:

$year = substr($date, 0, 4);

或者,正如salathe 所建议的,一种更快的方法:

$year = (int) $date;

(第一个破折号之后的所有内容都将被忽略,因此$year将包含一个带有日期部分的整数(与其他选项不同,其中$year将是一个字符串)。

于 2012-09-04T19:43:17.157 回答
3

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

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

于 2012-09-04T19:43:14.967 回答
2

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

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

echo $year; // echoes 2012
于 2012-09-04T20:48:36.990 回答
1

我可以建议使用 PHP 的DateTime 类作为替代方案:

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

echo $dateTime->format('Y');
于 2012-09-04T19:45:28.370 回答
1

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));
于 2012-09-04T19:51:11.253 回答