【发布时间】:2012-09-04 19:42:02
【问题描述】:
我通常会搞砸这个,但我试图从变量$date = 2011-01-01 中获取一年我试图从变量中获取2011...我试过这个但它没有回应任何东西...
date(strtotime("Y"), strtotime($date));
【问题讨论】:
我通常会搞砸这个,但我试图从变量$date = 2011-01-01 中获取一年我试图从变量中获取2011...我试过这个但它没有回应任何东西...
date(strtotime("Y"), strtotime($date));
【问题讨论】:
$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 将是一个字符串)。
【讨论】:
$year = substr($date, 0, 4); 稍微快一点 ;)
$year = (int) $date; waaaaaaaay 更快(对于 way 的微小值)
date('Y', strtotime($date)) 应该这样做
第一个参数是格式,第二个是时间戳。
【讨论】:
您可以将日期分解成一个列表并单独调用每个日期项。
$date = '2012-01-01';
list($year, $month, $day) = explode('-', $date);
echo $year; // echoes 2012
【讨论】:
我可以建议使用 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));
【讨论】: