PHP Parse Tarih Dize

7 Cevap php

Ben bir tarih dizesi var ise:

$date = "08/20/2009";

Ve ben tarihin her bölümünü ayırmak istiyorum:

$m = "08";
$d = "20";
$y = "2009";

Ben bu yüzden nasıl yapardın?

Ben kullanarak gereken özel bir tarih işlevi var mı? Ya da başka bir şey mi?

Teşekkürler!

7 Cevap

Bunu yapmanın bir yolu yapmak olacaktır:

$time = strtotime($date);
$m = date('m', $time);
$d = date('d', $time);
$y = date('Y', $time);

PHP'nin Çıkış date_parse function. Eğer giriş her zaman tutarlı bir formatta olacak ve önce bunu doğrulamak emin değilseniz, PHP sizin için biçimi ayrıştırmak deneyelim, (kolay söz değil), çok daha istikrarlı ve esnektir.

örneğin

<?php
//Both inputs should return the same Month-Day-Year
print_r(date_parse("2012-1-12 51:00:00.5"));
print_r(date_parse("1/12/2012"));
?>

Her zaman böyle midir? Ya da dosya biçimi, herhangi bir tür olacak?

Strtotime deneyin.

Gibi bir şey:

if(($iTime = strtotime($strDate))!==false)
{
 echo date('m', $iTime);
 echo date('d', $iTime);
 echo date('y', $iTime);
}

Eğer belirli bir biçimi varsa, bir date nesne kullanmanız gerekir.

$date = DateTime::createFromFormat('m/d/Y', '08/20/2009');
$m = $date->format('m');
$d = $date->format('d');
$y = $date->format('Y');

Kesinlikle DateTime::format() tek bir çağrı kullanabilirsiniz.

$newFormat = $date->format('d-m-Y');

nasıl bu konuda:

list($m, $d, $y) = explode("/", $date);

Hızlı bir liner.

Dominic cevabı iyidir, ama IF tarih ALWAYS aynı formatta bu ebil kullanma:

$m = substr($date,0,2);
$d = substr($date,3,2);
$y = substr($date,-4);

ve bir dizi kullanmak veya patlayabilir zorunda değil

Bill H