0

私は次の形式の文字列を持っています:

$date = "2012-07-22 17:48:24";

変数で年、月、日付を取得し、時刻を無視したいと思います。私は次のことを試みています:

list($year, $month, $day) = split('[-]', $date);

これはとに正しい値を返します$year$month$dayは:"22 17:48:24"を取得しますが、22のみを取得したいのです。

4

5 に答える 5

12

値を展開する代わりに、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年以降も機能し続けるためです:-)。コメントは間違いではありません。

于 2012-08-19T10:28:33.003 に答える
4

機能もありsscanf()ます。

sscanf('2012-07-22 17:48:24', '%d-%d-%d', $year, $month, $day);
于 2012-08-19T10:45:41.133 に答える
3

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]);

分割の使用は廃止されたため、お勧めしません。

于 2012-08-19T10:25:22.790 に答える
1
$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);
于 2012-08-19T10:27:51.370 に答える
1
$date = date('Y-m-d', strtoime("2012-07-22 17:48:24"));
list($year, $month, $day) = split('[-]', $date);
于 2012-08-19T10:29:53.533 に答える