Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303

    Ieri, oggi... invece della data

    Ciao a tutti,
    ho in uno script una parte di codice che mi dà per un file $chiave, la data dell'ultima modifica:

    Codice PHP:
    $giorno getLastModFile($chiave"d");
    $mese getLastModFile($chiave"m");
    $anno getLastModFile($chiave"Y"); 
    Come potrei fare, partendo da questo, a fargli scrivere invece della data, semplicemente "oggi", "ieri", "2 giorni fa", e se è maggiore di 2 giorni scrivo la data normalmente come già accade ora.

    Grazie a tutti, ciao.

  2. #2
    con php > 5.3.0 c'è DateDiff e DateInterval

    http://www.php.net/manual/en/datetime.diff.php

    altrimenti la prima risposta a questa discussione:

    http://stackoverflow.com/questions/1...in-php-on-days

    EDIT: da lì ti conti quanti giorni sono passati, a seconda del numero stampi ieri/oggi/domani/mille anni fa/quello che vuoi
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Non riesco a farlo funzionare

    Ho provato in questo modo:

    Codice PHP:
    $oggi date("d-m-y");
    $modifica getLastModFile($chiave"d-m-y");

    $differenza $oggi $modifica
    $chiave è il percorso del file che mi interessa controllare.

    sembra funzionare... è corretta secondo te la modalità oppure potrei avere problemi al cambio di mese per esempio?

    grazie ancora ciao!

  4. #4

    prova questo

    codice:
    function diff_in_giorni($first, $second)
    {
    
    //isoliamo i valori contenuti nei due array
      $array_f = @explode ("-", $first);
      $array_s = @explode ("-", $second);
    
      $dd1 = $array_f[0];
      $mm1 = $array_f[1];
      $yyyy1 = $array_f[2];
    
      $dd2 = $array_s[0];
      $mm2 = $array_s[1];
      $yyyy2 = $array_s[2];
    
    //utilizziamo i valori degli array come termini di confronto 
      $confronto1 = gregoriantojd($mm1, $dd1, $yyyy1);
      $confronto2 = gregoriantojd($mm2, $dd2, $yyyy2);
      
    //calcoliamo la differenza in giorni 
      return $confronto1 - $confronto2; 
      }
    Tanto...lo fanno tutti... posso farlo anche io vero?

  5. #5
    Originariamente inviato da carloscara
    Non riesco a farlo funzionare

    Ho provato in questo modo:

    Codice PHP:
    $oggi date("d-m-y");
    $modifica getLastModFile($chiave"d-m-y");

    $differenza $oggi $modifica
    $chiave è il percorso del file che mi interessa controllare.

    sembra funzionare... è corretta secondo te la modalità oppure potrei avere problemi al cambio di mese per esempio?

    grazie ancora ciao!
    guarda che getLastModFile non è una funzione predefinita di php, quindi devi vedere che fà quello
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    in pratica risulta:

    $oggi = 19-12-2012

    mentre $modifica = 18-12-2012 se il file è di ieri...

  7. #7
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    Devi prendere la data di modifica di un file su disco?

    usa filemtime($percorsodelfile)

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


    Ti ritorna un unixtimestamp lo confronti con time() e se la differenza tra i due è minore di 86400 è "Oggi", altrimenti se è minore di 172800 è "Ieri", altrimenti suppngo tu voglia stampare la data e a quel punto usi date("d-m-Y", filemtime($percorsodelfile));

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2000
    Messaggi
    303
    Originariamente inviato da Ranma2
    Devi prendere la data di modifica di un file su disco?

    usa filemtime($percorsodelfile)

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


    Ti ritorna un unixtimestamp lo confronti con time() e se la differenza tra i due è minore di 86400 è "Oggi", altrimenti se è minore di 172800 è "Ieri", altrimenti suppngo tu voglia stampare la data e a quel punto usi date("d-m-Y", filemtime($percorsodelfile));
    Provato, funziona ma non va bene al caso mio perché se ho un file di ieri sera alle 23 e lo confronto con ora che sono le 16, sono passate meno di 24 ore ma non può essere oggi...

  9. #9
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    fai così

    Codice PHP:
    $time time();
    $today date('d-m-y'$time);
    $yesterday date('d-m-y'$time 86400);

    $filedate date('d-m-y'$filemtime($percorsodelfile));

    if (
    $today == $filedate)
    {
        
    $string 'Oggi';
    }
    elseif (
    $yesterday == $filedate)
    {
        
    $string 'Ieri';
    }
    else
    {
        
    $string $filedate;


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.