jQuery: localizzazione e formattazione di un feed di Twitter in italiano

jQuery: localizzazione e formattazione di un feed di Twitter in italiano

Formattare e localizzare un feed JSON di Twitter in italiano richiede la conversione esplicita delle date e dei tempi in formato italiano. Twitter infatti usa la notazione inglese per le date e il fuso orario standard per calcolare i tempi dei tweet (ossia 0000). Dato che il fuso orario dell'Italia (Roma) è di due ore avanti rispetto a quello restituito da Twitter, dobbiamo operare una conversione aggiungedo 2 al numero dell'ora del tweet. Vediamo come fare.

Il formato standard delle date di Twitter è il seguente:

Tue Aug 09 10:16:05 +0000 2011

Vogliamo trasformarlo nel seguente formato:

Mar 9 Ago 2011 12:16:05

Creiamo quindi una funzione globale jQuery che, ricevuto il formato originale come parametro, lo trasforma in quello voluto:


(function($) {

  $.toItalianDateTime = function(ts) {
    
    
      // formato: Tue Aug 09 10:16:05 +0000 2011
      
      var rawDateTime = ts.replace('+0000', '');
      var timeChunks = rawDateTime.split(/\s/);
      
      var day = timeChunks[0];
      var month = timeChunks[1];
      var dayNo = timeChunks[2];
      var hms = timeChunks[3];
      var year = timeChunks[5];
      
      var hmsChunks = hms.split(':');
      var hour = new Number(hmsChunks[0]) + 2; // Roma, GMT + 2
      var minutes = hmsChunks[1];
      var seconds = hmsChunks[2];
      
      var itDay, itMonth, itDayNo;
      
      switch(day) {
      
        case 'Mon':
          itDay = 'Lun';
          break;
        case 'Tue':
          itDay = 'Mar';
          break;
        case 'Wed':
          itDay = 'Mer';
          break;
        case 'Thu':
          itDay = 'Gio';
          break;
        case 'Fri':
          itDay = 'Ven';
          break;
        case 'Sat':
          itDay = 'Sab';
          break;
        case 'Sun':
          itDay = 'Dom';
          break;
        default:
          break;
      
       }
       
       switch(month) {
      
        case 'Sep':
          itMonth = 'Set';
          break;
        case 'Oct':
          itMonth = 'Ott';
          break;
        case 'Nov':
          itMonth = 'Nov';
          break;
        case 'Dec':
          itMonth = 'Dic';
          break;
        case 'Jan':
          itMonth = 'Gen';
          break;
        case 'Feb':
          itMonth = 'Feb';
          break;
        case 'Mar':
          itMonth = 'Mar';
          break;
        case 'Apr':
          itMonth = 'Apr';
          break;
        case 'May':
          itMonth = 'Mag';
          break;
        case 'Jun':
          itMonth = 'Giu';
          break;
        case 'Jul':
          itMonth = 'Lug';
          break;
        case 'Aug':
          itMonth = 'Ago';
          break;
        
        
        default:
          break;
      
       }

       
       itDayNo = dayNo.replace(/^0/, '');
       
       var italianTS = itDay + ' ' + itDayNo + ' ' + itMonth + ' ' + year + ' ' + hour + ':' + minutes + ':' + seconds;
       
       return italianTS;
    
    
    
    };


})(jQuery);

Come si può notare, la funzione $.toItalianDateTime() scompone il formato originale in un array e poi opera la conversione su ciascun valore dell'array restituendo una nuova stringa. Alcune cose da evidenziare:

  • per aggiungere 2 al numero dell'ora originale, la stringa è stata prima convertita in un oggetto Number:
    
    var hour = new Number(hmsChunks[0]) + 2; // Roma, GMT + 2
    
  • abbiamo eliminato lo 0 iniziale dal numero del giorno:
    
    itDayNo = dayNo.replace(/^0/, '');
    

Potete visionare l'esempio finale in questa pagina.

Torna su