Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Controllo data maggiore e minore

    salve a tutti per quale motivo date queste due date

    $data = 2006-8-11
    e
    $datadue = 2006-08-24

    prese da una form che utilizza un calendarietto JS

    se faccio un
    if ($data > $datadue)
    {
    Attenzione errore la data presente nel campo DA deve essere inferiore
    }
    else
    {
    .....
    }

    ottengo sempre il messaggio di errore?
    può dipendere dal fatto che manca lo zero prima del mese ?
    come posso formattarla in modo corretto eventualmente ?!?!?!

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    probabilmente a causa dei separatori non calcola la data vera e propria ma calcola la diff. tra il solo giorno o altro. Basta formattarla in timestamp ed e' ok.

    list($anno,$mese,$giorno) = explode('-',$data1);
    $data1 = mktime( o, 0, 0, $mese, $giorno, $anno);

    e poi le confronti.

  3. #3
    mi viene sparato fuori questo errore
    Warning: mktime() expects parameter 1 to be long

    la formattazione con mktime() va fatta su entrambe le date vero ?

  4. #4
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    si scusa ho messo una o e non uno 0(zero). quelli sono : ore minuti e secondi

    http://it.php.net/manual/it/function.mktime.php

  5. #5
    ho provato a giochicchiare con la funzione ma ottengo risultati assurdi

    con questo codice e $data impostato su 3/8/2006

    list($anno,$mese,$giorno) = explode('-',$data);
    $data = mktime( 0, 0, 0, $mese, $giorno, $anno);

    ottengo

    1156401386

    la data 3/8/2006 viene convertita nel formato 2006-8-3 compatibile con mySQL

  6. #6
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    se hai la data impostata in un altro modo devi modificare questo: list($anno,$mese,$giorno) = explode('-',$data);

    explode('-',$data); : il trattino fra apici iniziali sta a indiare il simbolo separatore all interno della stringa data e quindi se 3/8/2006 dovrai metterci '/

    se poi hai le date in diversi formati questo lo sai tu. Ad esempio se 3/8/2006 corrisponde a 3 agosto 2006 sara': list($giorno,$mese,$anno) = explode('-',$data);

    devi giocare con la formattazione . E' invece importante non invertire i parametri di mktime();

  7. #7
    il punto è che io ho la data cosi fomattata prima di passarla alla EXPLODE

    2006-8-3

    oppure

    2006-8-14

    comunque in formato mysql ma senza gli zeri davanti ai numeri inferiori a 10

    mi sembra che il codice che mi hai suggerito dovrebbe andare bene e invece ottengo sempre dei risultati piuttosto strani

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da brutusin
    mi sembra che il codice che mi hai suggerito dovrebbe andare bene e invece ottengo sempre dei risultati piuttosto strani
    In che senso ottieni risultati strani? La soluzione che ti ha dato Marco va bene per trovare il timestamp, anche se mancano gli zeri.

    Un'alternativa magari più veloce potrebbe essere quella di usare strtotime.

    $ts1 = strtotime("2006-8-3");
    e ottieni lo stesso identico valore.

  9. #9
    strani nel senso che se stampo il valore vedo cose simili a queste

    1154556000

    ora io recupero la data che nella form è nel formato
    3/8/2006

    la trasformo in

    2006-8-3

    poi faccio il giochetto con mktime() o con strtotime("$data");

    e ottengo quanto mostrato sopra !

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da brutusin
    strani nel senso che se stampo il valore vedo cose simili a queste

    1154556000

    ora io recupero la data che nella form è nel formato
    3/8/2006

    la trasformo in

    2006-8-3

    poi faccio il giochetto con mktime() o con strtotime("$data");

    e ottengo quanto mostrato sopra !
    Allora non c'è niente di strano. Pensavo che sbagliasse il confronto.

    usa date per ritrasformare la data
    echo date('d/m/Y',1154556000);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.