私は通常これを台無しにしますが、変数$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 が必要です。古いバージョンでは、次の 2 行が必要です。
$arr = explode('-', '2011-01-01');
$year = $arr[0];
または、tigran によって提案されたこのわずかに高速な代替手段:
$year = substr($date, 0, 4);
または、salathe が提案したように、さらに高速な方法:
$year = (int) $date;
(最初のダッシュの後のすべてが無視されるため$year
、日付の年の部分に整数が含まれます (他のオプションとは異なり、どこ$year
に文字列が入ります)。
date('Y', strtotime($date))
すべき
最初の引数はフォーマット、2 番目はタイムスタンプです。
日付をリストに分解して、各日付項目を個別に呼び出すことができます。
$date = '2012-01-01';
list($year, $month, $day) = explode('-', $date);
echo $year; // echoes 2012
代わりにPHPのDateTimeクラスを使用することをお勧めします。
$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));