157 votes

Une valeur numérique mal formée rencontrée

J'ai un formulaire qui passe deux dates (début et fin) à un script PHP qui les ajoutera à une base de données. J'ai des problèmes pour valider cela. Je reçois toujours les erreurs suivantes

Une valeur numérique mal formée rencontrée

C'est quand j'utilise ce qui suit

 date("d",$_GET['start_date']);

Mais lorsque j'utilise la fonction strtotime() comme conseillé par de nombreux sites, j'obtiens une date d'horodatage unix du 1/1/1970. Des idées comment je peux obtenir la date correcte?

272voto

DChaplin Points 2526

Parce que vous passez une chaîne comme deuxième argument à la fonction de date, qui doit être un entier.

string date ( string $format [, int $timestamp = time() ] )

Essayez strtotime qui analysera toute description textuelle de datetime en anglais dans un horodatage Unix (entier):

 date("d", strtotime($_GET['start_date']));

5voto

spidersilk Points 11

J'ai rencontré la même situation (dans mon cas avec une valeur de date dans un champ PHP personnalisé dans une vue Drupal), et ce qui a fonctionné pour moi, c'était d'utiliser intval au lieu de strtotime pour transformer la valeur en un entier - car il s'agissait essentiellement d'un horodatage , mais sous la forme d'une chaîne plutôt que d'un entier. Évidemment, ce ne sera pas le cas pour tout le monde, mais cela vaut peut-être la peine d'essayer.

5voto

Tushar Walzade Points 877

Cela m'a beaucoup aidé -

 $new_date = date_format(date_create($old_date), 'Y-m-d');

Ici, date_create() vous fournit un objet date pour une date donnée & date_format() le définira dans un format donné.

par example,

 <?php
    $date = date_create("13-02-2013");  // DateTime Object ( [date] => 2013-02-13 00:00:00.000000 [timezone_type] => 3 [timezone] => America/New_York )
    echo date_format($date,"Y-m-d");    // 2013-02-13
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X