私は次の形式の文字列を持っています:
$date = "2012-07-22 17:48:24";
変数で年、月、日付を取得し、時刻を無視したいと思います。私は次のことを試みています:
list($year, $month, $day) = split('[-]', $date);
これはとに正しい値を返します$year
が$month
、$day
は:"22 17:48:24"
を取得しますが、22のみを取得したいのです。
値を展開する代わりに、DateTimeオブジェクトを使用できます。
<?php
$date = "2012-07-22 17:48:24";
$dateTime = new DateTime($date);
var_dump(array(
'year' => $dateTime->format('Y'),
'month' => $dateTime->format('m'),
'day' => $dateTime->format('d'),
));
これは、最も柔軟なオプションです。
@zerkmsが彼のコメントで述べているように、strtotime()
andも使用できますが、最近はクラスdate()
しか使用していません。DateTime
優れたOOAPIを備えているだけでなく、2038年以降も機能し続けるためです:-)。コメントは間違いではありません。
機能もありsscanf()
ます。
sscanf('2012-07-22 17:48:24', '%d-%d-%d', $year, $month, $day);
explodeを使用します:
$date = "2012-07-22 17:48:24";
$date = explode(" ", $date);
list($year, $month, $day) = split('[-]', $date[0]);
編集:
日付にもexplodeを使用する必要があります。
list($year, $month, $day) = explode('-', $date[0]);
分割の使用は廃止されたため、お勧めしません。
$date = "2012-07-22 17:48:24";
preg_match('~^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$~', $date, $m);
print_r($m);
$date = date('Y-m-d', strtoime("2012-07-22 17:48:24"));
list($year, $month, $day) = split('[-]', $date);