jQuery: formattare le date RSS in italiano

jQuery: formattare le date RSS in italiano

Le date RSS seguono il formato anglosassone, ossia Mon, 8 Feb 2010 20:30:00 GMT avente come schema giorno, mese anno ore:minuti:secondi fuso-orario. Queste date usano i nomi inglesi per i giorni e per i mesi. Con jQuery possiamo creare una funzione di utility che restituisca tali date nel formato Lunedì, 8 Febbraio 2010 20:30:00. L'implementazione è interamente basata sulla creazione di array a partire da stringhe e sulla successiva modifica delle voci di tali array. Vediamo i dettagli.

Chiamiamo la nostra funzione formatRSSDate() e la definiamo come funzione globale di jQuery:


(function($) {

  $.formatRSSDate = function(timestamp) {
  
  
    var day = '';
    var month = '';
    var time = '';
    
    var formattedDate = '';
    
    timestamp.replace(',' , ' ');
    timestamp.replace(/\+1\.00|GMT$/, ' ');
    
    var parts = timestamp.split(' ');
    var part = parts[0].replace(',','');
    
    switch(part) {
    
        case 'Mon':
	day = 'Lunedì';
	break;
        case 'Tue':
	day = 'Martedì';
	break;
        case 'Wed':
	day = 'Mercoledì';
	break;
       case 'Thu':
                day = 'Giovedì';
	break;
       case 'Fri':
                day = 'Venerdì';
	break;
       case 'Sat':
                day = 'Sabato';
	break;
       case 'Sun':
                day = 'Domenica';
                break;
       default:
                break;
  
    
    }
    
    switch(parts[2]) {
    
	case 'Jan':
	    month = 'Gennaio';
	    break;
	case 'Feb':
	    month = 'Febbraio';
	    break;
	case 'Mar':
	    month = 'Marzo';
	    break;
	case 'Apr':
	    month = 'Aprile';
	    break;
	case 'May':
	    month = 'Maggio';
	    break;
	case 'Jun':
	    month = 'Giugno';
	    break;
	case 'Jul':
	    month = 'Luglio';
	    break;
	case 'Aug':
	    month = 'Agosto';
	    break;
	case 'Sep':
	    month = 'Settembre';
	    break;
	case 'Oct':
	    month = 'Ottobre';
	    break;
	case 'Nov':
	    month = 'Novembre';
	    break;
	case 'Dec':
	    month = 'Dicembre';
	    break;
	default:
	    break;
    
    
    }
    
    time = parts[4].replace(/:\d{2}$/, '');
    
    formattedDate = day + ' ' + parts[1] + ' ' + month + ' ' + parts[3] + ' ' + time; 
    
   return formattedDate;

  
  
  
  };


})(jQuery);

Questa funzione ha come unico argomento la stringa contenente la data RSS. Tale stringa viene scomposta in più parti tramite il metodo split() e da questi componenti viene assemblata la stringa restituita dalla funzione (formattedDate). Gli unici componenti ad essere modificati sono il fuso orario, che viene rimosso, il mese e il nome del giorno. Da questi ultimi due componenti vengono costruiti due blocchi switch che creano i loro corrispettivi in italiano.

Possiamo usare questa funzione come segue:


$(function() {

  $.ajax({
    type: 'GET',
    url: 'feed.xml',
    dataType: 'xml',
    success: function(rss) {
    
      var html = '<ul>';
      var items = $(rss).find('item');
      
      items.each(function() {
      
        var $item = $(this);
        var title = $item.find('title').text();
        var link = $item.find('link').text();
        var desc = $item.find('description').text();
        var date = $.formatRSSDate($item.find('pubDate').text());
        
        html += '<li><h3><a href="' + link + '">' + title + '</a></h3>' +
                 '<div><small>' + date + '</small></div>' +
                 '<p>' + desc + '</p></li>';
      
      });
      
      html += '</ul>';
      
      $('#rss').html(html);
      
    
    }
    
  });

});

Potete visionare l'esempio finale in questa pagina.

Torna su