Question

J'ai une table mysql qui repose sur l'équivalent de l'horodatage d'époque unix de la date de l'entrée pour trier et filtrer dans différentes parties du site. Je suis en train de mettre en œuvre un sélecteur de date qui entrera la date dans le champ de formulaire dans le format mm / jj / aaaa. J'ai eu du mal à convertir cette date dans le format d'époque unix pour ajouter cette entrée dans le champ de ligne. Toutes les tentatives que j'ai fait ont abouti à générer l'horodatage d'époque de jour en cours. Est-ce que quelqu'un a une idée comment je peux prendre ce format de date et convertir en équivalent horodatage d'époque de l'il?

Merci d'avance.

Informations complémentaires:

J'ai essayé mktime, et tout ce que je reçois est aujourd'hui époque. Toutes mes excuses, j'aurais ajouté un code plus tôt pour mieux expliquer:

L'id du formulaire est "date" Le champ de base de données est "époque"

Voici ce que je suis en train (sans succès) quand je poste le jour pour:

$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);

Je comprends un post précédent que ce serait encore présenter la valeur mm / jj / aaaa et non mm, jj, aaaa que mktime attend, mais le poste n'a pas offert et de la résolution sur la façon de le faire. J'ai essayé str_replace de changer le « / » à « » et que yeilded le même résultat - obtenir la date de l'époque d'aujourd'hui quelle que soit la date entrée

.

Voici cet exemple de code - encore une fois cela ne fonctionne pas, mais je l'ajouter à aider à illustrer ce que j'ai essayé

$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);

Merci pour la réponse précédente ainsi, je ne voulais pas la réponse rapide de passer inaperçu!

Merci à tous!

Merci à tous pour les réponses - strtotime semble fonctionner mieux sur les tests initiaux et peut-être la voie à suivre que ce format est uniforme dans tout le site. Mais toutes les suggestions ont aidé à cette quelques autres choses tout bien je vous remercie donc tous à nouveau!

Était-ce utile?

La solution

Si vous savez que ce sera toujours dans ce format, strtotime vous permet de convertir directement dans l'horodatage unix.

strtotime($_POST['app_date']);

HTH!

Autres conseils

Vous devriez regarder le mktime () fonction. Couple qui soit avec des expressions régulières ou strtotime () , et vous l'avez.

if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) {
    // complain about invalid input
}

list($m, $d, $y) = explode('/', $_POST['date']);
$timestamp = mktime(0, 0, 0, $m, $d, $y);

Vous allez devoir envoyer le dd, mm, aaaa comme vars séparés à mktime. Il prend la valeur de $ epochold2 comme une chaîne qui serait valide pour mktime.

Votre meilleur pari serait d'utiliser le strtotime comme je l'ai déjà dit, ou de suivre les conseils de Ant P en utilisant mktime.

strtotime () analysera à peu près tous les formats de date et retourner l'horodatage Unix. Tout ce que vous avez à faire est de passer votre chaîne date / heure:

$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
    //error case
}
else {
    //value OK!
}

Comme vous pouvez le voir ci-dessus, vous pouvez même l'utiliser pour aider à valider l'entrée -. Si un utilisateur entre une date comme 31/02/2008, il retournera -1

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top