Visualizzazione risultati 1 fino 20 di 20

Discussione: [JS] Orario come twitter?

  1. #1
    Guest

    Wink [JS] Orario come twitter?

    Ciao a tutti, sapete indicarmi dove trovare uno script simile all'orario di twitter?
    "about 14 hours ago", "5:00 PM Sep 13th", ecc.... mi interesserebbe molto.
    Prendere come esempio di "orario" questo: http://twitter.com/php
    Grazie mille! *____*
    PS. Mi serve perché dopo vorrei "concatenarlo" con PHP! XD

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Un'idea potrebbe essere questa:
    Codice:
    var today = new Date();
    
    // questa è la data del messaggio, formattata come oggetto JavaScript Date()
    var refDate = ... ;
    
    var time = Math.floor((today.getTime() - refDate.getTime()) / 1000);
    
    if (time < 60)
       document.write (time + ' secondi fa');
    else
    {
       time = Math.floor(time / 60);
       if (time < 60)
          document.write (time + ' minuti fa');
       else
       {
          time = Math.floor(time / 60);
          if (time < 24)
             document.write (time + ' ore fa');
          else
          {
             time = Math.floor(time / 24);
             if (time < 30)
                document.write (time + ' giorni fa');
             else
                document.write (refDate.toLocaleString());
          }
       }
    }
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Pare che vorresti sapere il tempo trascorso giusto?
    Secondo te come faccio a sapere quanti giorni mancano al 20 settembre (cm)?

  4. #4
    Guest

    Predefinito

    @dementialsite: Allora, devo chiederti due cose! XD
    La data, in che formato deve essere? Io con date() la faccio così:
    Codice PHP:
    date("\i\l d M Y \a\l\l\e H:i a");
    e dopo come faccio a dirgli che si deve mettere in questa (vedi sotto) posizione?
    Codice PHP:
    <h2>altro testo <span>LA DATA SI DEVE INSERIRE QUI</span></h2>
    Grazie mille! *____*

    @svcant: Facendo una sottrazione veloce?? O__o

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Se devi generare un JavaScript, devi ottenere questo formato:
    Codice:
    new Date (anno, mese, giorno, ora, minuto, secondo);
    Attenzione, in JS per il mese vale 0 = gennaio, 1 = febbraio, 2 = marzo, etc.

    Per metterlo in una determinata posizione, ti basta specificare un id allo span, e poi inserire il testo usando
    Codice:
    document.getElementById('...').innerHTML = ... // la stringa che stampi sopra con document.write()
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    Guest

    Predefinito

    Allora...ho combinato un casino, visto che non so' come fare questa cavolo di data! é___è
    Parte PHP:
    Codice PHP:
    $id = "account00";
    $tweet = new SimpleXMLElement("http://twitter.com/users/show/".urlencode($id).".xml",NULL,TRUE);
    $completa = date("Y,",strtotime($tweet->status->created_at));
    $mese = date("n, ",strtotime($tweet->status->created_at));
    $a = array("01","02","03","04","05","06","07","08","09","10","11","12");
    $b = array("00","01","02","03","04","05","06","07","08","09","10","11");
    $completa = str_replace($a,$b,$mese);
    $completa .= date("d, H, i, s",strtotime($tweet->status->created_at));
    Parte JS:
    Codice PHP:
    var today = new Date();

    // questa è la data del messaggio, formattata come oggetto JavaScript Date()
    var refDate = <?=$completa;?>;

    var time = Math.floor((today.getTime() - refDate.getTime()) / 1000);

    if (time < 60) { document.getElementById('data').innerHTML = '<b>' + time + ' secondi fa</b>'; }
    else {
    time = Math.floor(time / 60);
    if (time < 60) { document.getElementById('data').innerHTML = time + ' minuti fa'; }

    else {
    time = Math.floor(time / 60);
    if (time < 24) { document.getElementById('data').innerHTML = time + ' ore fa'; }

    else {
    time = Math.floor(time / 24);
    if (time < 30) { document.getElementById('data').innerHTML = time + ' giorni fa'; }

    else { document.write (refDate.toLocaleString()); }
    } // giorni
    } // ore
    } // minuti
    Il JS viene poi richiamato dal file "data.js"! ^___^ In pratica non spunta niente! O___o
    Ciauu!! <3

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Hai dimenticato:
    - un punto per concatenare il secondo "$completa"
    - di "finire" la variabile $completa, inserendo la creazione dell'oggetto Date nel JS (tradotto, nel file JS stampi solo i parametri e non il costruttore con i parametri al suo interno)

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    Guest

    Predefinito

    Allora ho aggiunto .= all'str_replace di $completa, ma non ho capito il secondo punto come potrei fare...
    - di "finire" la variabile $completa, inserendo la creazione dell'oggetto Date nel JS (tradotto, nel file JS stampi solo i parametri e non il costruttore con i parametri al suo interno)
    Come si fa? Non ho proprio idea, visto che lo includo esternamente! XD

  9. #9
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Allora ho aggiunto .= all'str_replace di $completa, ma non ho capito il secondo punto come potrei fare...

    Come si fa? Non ho proprio idea, visto che lo includo esternamente! XD
    Mi sembrava fosse chiaro... aggiungi quest'ultima riga:
    Codice PHP:
    $completa = "new Date($completa)"
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  10. #10
    Guest

    Predefinito

    Niente da fare, non funziona ancora! =(
    Parte Template (index.php del sito):
    Codice PHP:
    <head><script type="text/javascript" src="altro/data.js"></script></head>
    Parte PHP (viene inclusa - home.php):
    Codice PHP:
    <?
    $id
    = "id";
    $tweet = new SimpleXMLElement("http://twitter.com/users/show/".urlencode($id).".xml",NULL,TRUE);
    $completa = date("Y,",strtotime($tweet->status->created_at));
    $mese = date(" n, ",strtotime($tweet->status->created_at));
    $a = array("01","02","03","04","05","06","07","08","09","10","11","12");
    $b = array("00","01","02","03","04","05","06","07","08","09","10","11");
    $completa .= str_replace($a,$b,$mese);
    $completa .= date("d, H, i, s",strtotime($tweet->status->created_at));
    $completa = "new Date($completa)"; // creo la data per il js
    ?>

    <h2>Welcome!! <span id="data"></span></h2>
    Parte JS (data.js):
    Codice PHP:
    var today = new Date();

    // questa è la data del messaggio, formattata come oggetto JavaScript Date()
    var refDate = <?=$completa;?>;

    var time = Math.floor((today.getTime() - refDate.getTime()) / 1000);

    if (time < 60) { document.getElementById('data').innerHTML = '<b>' + time + ' secondi fa</b>'; }
    else {
    time = Math.floor(time / 60);
    if (time < 60) { document.getElementById('data').innerHTML = time + ' minuti fa'; }

    else {
    time = Math.floor(time / 60);
    if (time < 24) { document.getElementById('data').innerHTML = time + ' ore fa'; }

    else {
    time = Math.floor(time / 24);
    if (time < 30) { document.getElementById('data').innerHTML = time + ' giorni fa'; }

    else { document.getElementById('data').innerHTML = refDate.toLocaleString(); }
    } // giorni
    } // ore
    } // minuti
    Grazie mille! ^^"
    Ultima modifica di sIM : 21-09-2009 alle ore 14.28.33

  11. #11
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    A parte che non riesco a capire come colleghi lo script PHP al file JS che viene dopo, hai provato a controllare se la stampa del file avviene correttamente?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  12. #12
    Guest

    Predefinito

    Sisi, ho provato $completa funziona. Solo che non riesco a farla "arrivare" al data.js! XD
    Soluzioni? =D

  13. #13
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Intendevo dire: la stampa del codice JavaScript avviene correttamente (sul browser vedi che il codice PHP è sostituito correttamente, per capirci)?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  14. #14
    Guest

    Predefinito

    Si, $completa funziona correttamente. Ma non riesce ad arrivare al JavaScript.
    Ecco dove sta il problema. Grazie mille.

  15. #15
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Provato a scrivere <?php echo $completa; ?>? Non saprei che altro inventarmi...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  16. #16
    Guest

    Predefinito

    Allora, forse non mi riesco a spiegare! XD $completa, non viene ricevuta da JS.
    C'è un modo per farlo? Grazie mille!! é___è, e scusami se ti sto facendo "spasare" tempo!!

  17. #17
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Allora, forse non mi riesco a spiegare! XD $completa, non viene ricevuta da JS.
    C'è un modo per farlo? Grazie mille!! é___è, e scusami se ti sto facendo "spasare" tempo!!
    No, non l'ho mica capito...

    Io mi aspetto che il codice JS si trovi in un file con estensione PHP, e che tale file:
    - contenga una direttiva header("Content-type: text/javascript") all'inizio del file
    - contenga una direttiva include "home.php" prima di stampare nel codice la variabile $completa
    - venga poi richiamato da una pagina HTML con il classico tag
    Codice HTML:
    <script type="text/javascript" src="...php"></script>
    Messa in questo modo, dovrebbe funzionare... almeno, senza testarlo non riesco a trovare un motivo per cui questo script non ti funzioni.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  18. #18
    Guest

    Predefinito

    Allora, ho provato con il tuo metodo: Creo il file "data.php", metto dentro questo:
    Codice PHP:
    <?
    header
    ("Content-type: text/javascript");

    $id = "mioaccount";
    $tweet = new SimpleXMLElement("http://twitter.com/users/show/".urlencode($id).".xml",NULL,TRUE);
    $completa = date("Y,",strtotime($tweet->status->created_at));
    $mese = date(" n, ",strtotime($tweet->status->created_at));
    $a = array("01","02","03","04","05","06","07","08","09","10","11","12");
    $b = array("00","01","02","03","04","05","06","07","08","09","10","11");
    $completa .= str_replace($a,$b,$mese);
    $completa .= date("d, H, i, s",strtotime($tweet->status->created_at));
    ?>
    var today = new Date();

    // prendo la data con PHP
    var refDate = new Date(<?php echo $completa; ?>);

    var time = Math.floor((today.getTime() - refDate.getTime()) / 1000);

    if (time < 60) { document.getElementById('data').innerHTML = '<b>' + time + ' secondi fa</b>'; }
    else {
    time = Math.floor(time / 60);
    if (time < 60) { document.getElementById('data').innerHTML = time + ' minuti fa'; }

    else {
    time = Math.floor(time / 60);
    if (time < 24) { document.getElementById('data').innerHTML = time + ' ore fa'; }

    else {
    time = Math.floor(time / 24);
    if (time < 30) { document.getElementById('data').innerHTML = time + ' giorni fa'; }

    else { document.getElementById('data').innerHTML = refDate.toLocaleString(); }
    } // giorni
    } // ore
    } // minuti
    E aggiungo questo al template:
    Codice PHP:
    <script type="text/javascript" src="altro/data.php"></script>
    Risultato? La date ora viene visualizzata da Date() (visto del sorgente) ma non viene stampato nulla con js! XD
    Ho provato a fare un document.write ma non si visualizza!! XD
    Grazie mille.

  19. #19
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Nel file HTML che include lo script hai un DIV o uno SPAN con ID "data", vero?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  20. #20
    Guest

    Predefinito

    Ora funziona, MA (perché c'è sempre! XD) non fa bene il suo lavoro...ad esempio ho scritto un post giorni fa ed ecco cosa stampa:
    -2499708 secondi fa
    Invece twitter dice che è stato scritto ehm...vediamo:
    6:03 PM Sep 22nd from web
    C'è molta differenza secondo me! ;D
    Grazie mille!! ^^
    Codice PHP:
    <?
    $id
    = "mioacc";
    $tweet = new SimpleXMLElement("http://twitter.com/users/show/".urlencode($id).".xml",NULL,TRUE);
    $completa = date("Y,",strtotime($tweet->status->created_at));
    $mese = date(" n, ",strtotime($tweet->status->created_at));
    $a = array("01","02","03","04","05","06","07","08","09","10","11","12");
    $b = array("00","01","02","03","04","05","06","07","08","09","10","11");
    $completa .= str_replace($a,$b,$mese);
    $completa .= date("d, H, i, s",strtotime($tweet->status->created_at));
    ?>
    var today = new Date();

    // prendo la data con PHP
    var refDate = new Date(<?php echo $completa; ?>);

    var time = Math.floor((today.getTime() - refDate.getTime()) / 1000);

    if (time < 60) { document.getElementById("data").innerHTML = "<b>" + time + " secondi fa</b>"; }
    else {
    time = Math.floor(time / 60);
    if (time < 60) { document.getElementById("data").innerHTML = time + " minuti fa"; }

    else {
    time = Math.floor(time / 60);
    if (time < 24) { document.getElementById("data").innerHTML = time + " ore fa"; }

    else {
    time = Math.floor(time / 24);
    if (time < 30) { document.getElementById("data").innerHTML = time + " giorni fa"; }

    else { document.getElementById("data").innerHTML = refDate.toLocaleString(); }
    } // giorni
    } // ore
    } // minuti
    Ultima modifica di sIM : 23-09-2009 alle ore 19.43.21

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •