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.