PHP tarihleri ​​mangles

4 Cevap php
$doba = explode("/", $dob);

$date = date("Y-m-d", mktime(0,0,0, $doba[0], $doba[1], $doba[2]));

Yukarıdaki kod i 1999/11/30 içine geçmesine ve ben bunu dün çalışıyordu biliyorum herhangi bir tarih döner. Ben $ Doba echo Tarihi doğrudur. Herkes herhangi bir fikir var mı?

Şerefe

4 Cevap

Formatı nedir $doba? mktime 'sözdizimi saat, dakika, saniye, month, day year kafa karıştırıcı olabilir gider unutmayın.

İşte bazı örnekler var:

$doba = explode('/', '1991/08/03');
echo(date('Y-m-d', mktime(0,0,0, $doba[1], $doba[2], $doba[0]);

$doba = explode('/', '03/08/1991');
echo(date('Y-m-d', mktime(0,0,0, $doba[1], $doba[0], $doba[2]);

hatta daha kolay: $date = date('Y-m-d', strtotime($dob))

Bu durumda mktime kullanmak için biraz overkill. $dob aşağıdaki biçimde olduğunu varsayarsak:

MM/DD/YYYY

yapabildin sadece için (her zaman geçerli olan $dob varsayarak) aynı sonucu başarmak için aşağıdaki:

$doba = explode("/", $dob);
$date = vsprintf('%3$04d-%1$02d-%2$02d', $doba);

Eğer jcoby yukarıda söyledikleri ile ilgili sorunlar varsa, strptime () komutu size de biçimini belirtmek için izin vererek daha fazla kontrol sağlar.