2010-11-25 8 views
22

私は'Y-m-d'の形式で日付の配列を持っています。私は配列をループし、各メンバーの一日だけを抽出したいが、それを分割することはできない。何らかの方法で部分文字列を使用しますか?完全な 'Date'文字列から 'Day'値のみを抽出する方法は?

簡単に言えば、私は'2010-11-24'です。ちょうど'24'から取得したいと思います。今日の問題は、単数形か二重形かのどちらかです。

答えて

59

あなたがPHP < 5.3を持っている場合は、strtotime()を使用します。

$string = "2010-11-24"; 
$timestamp = strtotime($string); 
echo date("d", $timestamp); 

あなたはPHP> = 5.3をお持ちの場合は、createFromFormat使用DateTimeベースのソリューションを使用する - DateTimeは未来である1900を超えて日付を扱うことができ、 2038:

$string = "2010-11-24"; 
$date = DateTime::createFromFormat("Y-m-d", $string); 
echo $date->format("d"); 
+1

+1。メソッド名だけで分かりやすい – jensgram

5
$date = '2010-11-24'; 
list($y, $m, $d) = explode('-', $date); 

Demoexplode()上のドキュメント。

あるいは

$date = '2010-11-24'; 
$d = substr($date, strrpos($date, '-') + 1); 

Demosubstr()strrpos()上のドキュメント。

免責事項:どちらもoldschoolです!

0
php> $d = '2010-11-24'; 
'2010-11-24' 
php> $fields = explode('-', $d); 
array (
    0 => '2010', 
    1 => '11', 
    2 => '24', 
) 
php> $fields[2]; 
'24' 
0
<?php 

$dates = array('2010-01-01', '2010-01-02', '2010-01-03', '2010-01-23'); 

foreach ($dates as $date) { 
    $day[] = substr($date, 8, 2); 
} 

var_dump($day); 

?> 
+0

月がちょうど「9」であるか、常に「09」であるかによって異なります。 – jensgram

+0

あなたが正しく尋ねていたことを理解していれば、その日のちょうどその日の部分を与えるでしょう。 – martynthewolf

+0

Ymdが提案するフォーマットでは、月が10未満の場合、mは01,02,03などのように0になります。 – martynthewolf

0
$string = "2010-11-24"; 
$date = new DateTime($string); 
echo date_format($date, 'd'); 
0

は例えば、date_parse_from_formatを使用してみてください。:シェルで

date_parse_from_format('Y-m-d', '2010-11-24')['day']; 

テスト: `DateTime`バージョンの

$ php -r "echo date_parse_from_format('Y-m-d', '2010-11-24')['day'];" 
24 
関連する問題