2010-09-01 14 views

Répondre

3

Vous pouvez faire:

$input = 'dd-mm-yy'; 
$a = explode('-',$input); 
$result = $a[1].'-'.$a[0].'-'.$a[2];          
+0

$ old_date = date ($ date); $ old_date_timestamp = strtotime ($ old_date); $ new_date = date ('d-m-Y', $ old_date_timestamp); –

8

Cela ne fonctionnera pas:

date('m-d-y', strtotime($the_original_date)); 

Si vous avez PHP 5.3, vous pouvez faire:

$date = DateTime::createFromFormat('d-m-y', '09-10-01'); 
$new_date = $date->format('m-d-Y'); 

Sinon:

$parts = explode('-', $original_date); 
$new_date = $parts[1] . '-' . $parts[0] . '-' . $parts[2]; 
+2

Cela échouera dans certaines situations car strtotime reconnaît les dates en anglais américain. 03-01-10 sera interprété comme le 1er mars 2010 et non le 3 janvier 2010. – stillstanding

+0

ceci est mon code Testadmin

+0

Réponse mise à jour parce qu'il était entièrement faux. Merci @stillstanding. – jasonbar

0

Si la le format est toujours comme ci-dessus , Cela devrait fonctionner:

$pieces = explode("-", $yourTimestring); 
$timestamp = mktime(0,0,0,$pieces[1], $pieces[0], $pieces[2]); 
$newDateStr = date("m-d-y", $timestamp); 

Edit: vrai, juste vu la réponse de « codaddict » et oui, si je alredy le diviser, vous pouvez aussi concaténer ^^ directement

0

Vous pouvez utiliser la fonction sscanf si vous n'avez pas PHP 5.3 disponible et faire échange option l'utilisation de l'argument:

$theDate = '01-02-03'; 
print join(sscanf($theDate, '%2$2s-%1$2s-%3$2s'), '-'); 
# output: 02-01-03 

sscanf parse essentiellement la chaîne fournie dans un tableau sur la base prévue mat, échange le premier argument correspondant (le jour) avec le second (le mois), laissant le troisième (l'année) intact, puis ce tableau est rejoint à nouveau avec le - comme séparateur.