Voici quelques expressions de débogage que je mets à Eclipse, si vous ne me croyez pas:
public static function randomDate($start_date, $end_date, $format = DateTimeHelper::DATE_FORMAT_SQL_DATE) { if($start_date instanceof DateTime) $start_date = $start_date->format(DateTimeHelper::DATE_FORMAT_YMDHMS); if($end_date instanceof DateTime) $end_date = $end_date->format(DateTimeHelper::DATE_FORMAT_YMDHMS); // Convert timetamps to millis $min = strtotime($start_date); $max = strtotime($end_date); // Generate random number using above bounds $val = rand($min, $max); // Convert back to desired date format return date($format, $val); }
5 Réponses :
Essayez de le garder avant le mardi, 19 janvier 2038 03:14:07 UTC, lorsque l'époque Unix Timeestamp pour 32 bits roule sur!
Il est même décrit dans le manuel à http://php.net/strtotime p>
Re: Edit - Notez que 64 bits PHP (coffre-fort VC9) sur Vista 64 bits utilise toujours une gamme d'horodatages entière signée 32 bits pour les valeurs de date
Je présume que c'est parce que strtotime () code> n'est pas une fonction PHP, mais juste un morceau de tuyauterie pour se connecter à (g) libc (au moins dans UNIX TERRAIN)
Peut-être que j'étais plutôt irrité lorsque je l'ai découvert tout en faisant des tests de jour sur diverses plateformes récemment. Il est également intéressant de noter que les formats de chaîne de date passés au constructeur DateTime acceptent un certain nombre de formats que Strtotime rejetera; mais je n'ai pas regardé les internes pour voir ce que les deux utilisent
Vous ne pouvez pas convertir les dates qui se produisent après le roulement de temps UNIX (2038) P>
Gah ... battu comme un stetischild gingembre.
de Le manuel PHP : P>
La gamme valide d'un horodatage est typiquement du vendredi, 13 déc. 1901 20:45:54 GMT à Mar, 19 janvier 2038 03:14:07 GMT. (Ce sont les dates correspondant aux valeurs minimales et maximales pour un entier signé 32 bits). Cependant, avant PHP 5.1.0, cette gamme était limitée du 01-01-1970 au 19-01-2038 sur certains systèmes (par exemple Windows). P> blockQuote>
Voir aussi: Année 2038 Problème - Wikipedia P>
Si vous souhaitez travailler avec des dates qui tombent en dehors de la plage de dates entière 32 bits, utilisez les objets DateTime de PHP
try { $date = new DateTime('2110-07-16 10:07:47'); } catch (Exception $e) { echo $e->getMessage(); exit(1); } echo $date->format('Y-m-d');
En fait, cela semble que cela va tuer ma fonction aléatoireDate. Comment puis-je faire une date aléatoire avec une date d'heure?
Comment cette réponse est-elle acceptée lorsque la question était de savoir comment obtenir un horodatage UNIX?
@mvds parce que vous pouvez appeler le format () avec vous pour récupérer un tableau Unix. Voir php.net/manual/fr/dateTime.format.php et < Un href = "http://www.php.net/manual/fr/funck.date.php" rel = "nofollow noreferrer"> php.net/manual/fr/funcund.date.php .
remplacement simple de Strtotime message réel Ici . p> p>
Il n'imprime pas la date SIR
Nous croyons que vous vous croyons, sauf son comportement attendu pour les valeurs de date que vous passez qui tombent en dehors de la plage de dates PHP 32 bits
De PHP Documentation: La gamme valide d'un horodatage est généralement du vendredi, 13 déc. 1901 20:45:54 UTC à Mar, 19 janvier 2038 03:14:07 UTC. (Ce sont les dates correspondant aux valeurs minimales et maximales pour un entier signé 32 bits.) En outre, toutes les plates-formes ne prennent pas en charge les horodatages négatifs, votre gamme de dates ne peut donc pas être limitée à l'époque UNIX. Cela signifie que par exemple Les dates antérieures au 1er janvier 1970 ne fonctionneront pas sur Windows, certaines distributions Linux et quelques autres systèmes d'exploitation. PHP 5.1.0 et les versions plus récentes surmontent cette limitation cependant.
J'utilise php 5.3 = S 5.2 sur mon serveur Live. ne devrait-il pas marcher, alors?
Non, PHP 5.1.0+ Correction de "En outre, toutes les plates-formes ne supporte pas les horodats négatifs" Bit, pas le bit "à la marge de 2038".