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 が必要です。古いバージョンでは、次の 2 行が必要です。

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

または、tigran によって提案されたこのわずかに高速な代替手段:

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

または、salathe が提案したように、さらに高速な方法:

$year = (int) $date;

(最初のダッシュの後のすべてが無視されるため$year、日付の年の部分に整数が含まれます (他のオプションとは異なり、どこ$yearに文字列が入ります)。

于 2012-09-04T19:43:17.157 に答える
3

date('Y', strtotime($date))すべき

最初の引数はフォーマット、2 番目はタイムスタンプです。

于 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 に答える