2010-11-06 8 views
0

Je viens d'écrire une fonction en PHP qui change les dates en un format plus humain.PHP Date Compiler

function customDate($input_date){ 
$datetime = explode(' ', $input_date); 
$date = explode('-', $date); 
$time = explode(':', $time); 
$current = date('Y-m-d H:i:s'); 
$currentdatetime = explode(' ', $current); 
$currentdate = explode('-', $current_date); 

if($date[2] == $currentdate[2]) return date('H:i', strtotime($input_date)); 
else if($date[2] != $currentdate[2] && $date[0] == $currentdate[0]) return date('F d H:i', strtotime($input_date)); 
else if($date[2] = $currentdate[2] && $date[0] != $currentdate[0]) return date('F d Y H:i', strtotime($input_date)); 
else return $input_date; 
} 

Cela change les dates comme 2010-11-06 18:25:55 regarder plus jolie comme 18:25 (si 2010-11-06 est aujourd'hui), 11 November 18:25 (sinon aujourd'hui, mais encore en année 2010) ou 11 November 2010 18:25 si l'année 2010 est déjà passée. Mais c'est en théorie, je ne peux pas savoir pourquoi la fonction continue de sortir seulement des heures et des minutes avec des dates différentes. Qu'est-ce qui peut causer le problème?

+0

mmm Je ne sais pas ce que vous entendez seulement les heures et minutes avec différents jours ... mais vous pouvez vérifier ce lien et voir si elle est utile pour vous: http: // stackoverflow. com/questions/4003476/humain-lisible-date-en utilisant-php/4003499 # 4003499 –

Répondre

0

Je pense que la fonction produit le même format car elle est plus précise mais il n'y a pas non plus de code écrit pour la rendre plus lisible.

Mais c'est une épée à 2 tranchants. Mac aime utiliser "fini en quelques minutes". Windows aime utiliser "fini en 2 minutes 20 secondes". Certaines personnes peuvent trouver l'expression «fini en minutes» ou «secondes» assez bon, mais en même temps, si j'ai besoin d'attraper le bus, et je ne sais pas si c'est 2 minutes ou 7 minutes , alors ça peut être un problème. En même temps, je n'ai probablement pas besoin de connaître "2 minutes 20 secondes" contre "2 minutes 15 secondes".

Donc, similaire à votre problème ... parfois, il est nécessaire de montrer les détails, parfois non. Par exemple, pour afficher l'heure d'un billet de concert que vous avez acheté, le mois et peut-être même l'année est probablement nécessaire.

+0

Bonnes pensées, mais ils sont hors-sujet. J'ai juste besoin de savoir ce qui ne va pas avec la fonction car elle ne renvoie pas les valeurs qu'elle devrait avoir. –

1

PHP supporte déjà presque tous les formats que vous voulez en utilisant la fonction date(). Si besoin est, combinez-le avec strtotime() pour obtenir ce que vous voulez. C'est assez puissant. Par exemple:

if (date('Y',strtotime($input_date)) < date('Y',time())) { 
    echo date('d F Y H:i'); 
} else { 
    echo date('d F H:i'); 
} 
// Oter examples 
echo date('Y-m-d', strtotime('last tuesday')); 
echo date('Y-m-d', strtotime('3 days ago')); 
echo date('Y-m-d', strtotime('+4 weeks')); 
echo date('Y-m-d H:iA', strtotime('+2 hours 23 minutes')); 
echo date('Y-m-d H:iA', strtotime('+2 hours -23 minutes'));