gg/mm/aaaa formato epoca con PHP
Domanda
Ho una tabella mysql che si basa su unix epoch time stamp equivalente della data di entrata a ordinare e filtrare in varie parti del sito.Sto cercando di implementare un selettore data che ti inserire la data nel campo modulo in gg/mm/aaaa.Ho lottato con la conversione di tale data in unix epoch formato per aggiungere la voce nella riga campo.Tutti i tentativi che ho fatto hanno portato a generare il giorno corrente epoch time stamp.Qualcuno ha qualche idea di come posso prendere che il formato della data e la conversione in e ' equivalente epoch time stamp?
Grazie in anticipo.
Informazioni aggiuntive:
Ho cercato mktime, e tutto quello che ottiene è di oggi l'epoca.Scuse, io avrei aggiunto un po ' di codice precedente per spiegare meglio:
Il modulo id "date": "Il campo del database è "epoca"
Ecco quello che sto cercando (senza successo) quando ho posto la data:
$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);
Ho capito da un post precedente che questo sarebbe ancora inviare il valore come mm/gg/aaaa e non mm, dd, yyyy come mktime si aspetta, tuttavia il post non l'offerta e la risoluzione su come fare.Ho provato un str_replace per modificare la "/" a "," e che yeilded lo stesso risultato - sempre oggi, epoca del data a prescindere dalla data di entrata.
Ecco il codice di esempio - di nuovo questo non funziona, ma posso aggiungere per spiegare quello che ho provato
$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);
Grazie per la precedente risposta, non volevo la risposta rapida per passare inosservati!
Grazie a tutti!
Grazie a tutti per le risposte - strtotime sembra funzionare meglio nella fase iniziale di test e potrebbe essere la strada da percorrere come questo formato è coerente in tutto il sito.Ma tutti i suggerimenti hanno contribuito con un paio di altre cose tutte bene, quindi grazie ancora a tutti voi!
Soluzione
Se si sa che si sarà sempre in quel formato, strtotime convertire direttamente con il timestamp unix.
strtotime($_POST['app_date']);
HTH!
Altri suggerimenti
Si dovrebbe guardare il mktime() funzione.Coppia che, con le espressioni regolari o strtotime(), e lo avrai.
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);
Hai bisogno di inviare il gg,mm,aaaa, come separata vars per mktime.Si prende il valore in $epochold2 come una stringa che sarebbe valido per mktime.
La vostra scommessa migliore sarebbe quella di utilizzare la funzione strtotime come ho già detto, o per seguire Ant P i consigli di utilizzo mktime.
strtotime() analizza qualsiasi formato di data e ritorno il timestamp Unix.Tutto quello che dovete fare è passare la tua stringa data/ora:
$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
//error case
}
else {
//value OK!
}
Come si può vedere sopra, si può anche utilizzare per aiutare a convalidare l'input - se un utente inserisce una data come 02/31/2008, restituisce -1.