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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top