Ontem eu estava no blog do John Resig vendo o que ele anda fazendo com Javascript e tinha um post de uma brincadeira que ele fez com a parte de datas. Por exemplo, você chama
prettyDate("2008-12-03T20:24:17Z")
e a resposta é “Yesterday”. Eu acho isso muito legal no sentido que fica mais próximo da linguagem real do usuário.
Pois bem, nos comentários do post foi indicado o Datejs, uma api que usa uma DSL para facilitar a construção de datas em Javascript. Aqui vai um exemplo retirado do próprio site.
// What date is next thrusday?
Date.today().next().thursday();
// Add 3 days to Today
Date.today().add(3).days();
// Is today Friday?
Date.today().is().friday();
// Number fun
(3).days().ago();
// 6 months from now
var n = 6;
n.months().fromNow();
// Set to 8:30 AM on the 15th day of the month
Date.today().set({ day: 15, hour: 8, minute: 30 });
// Convert text into Date
Date.parse(‘today’);
Date.parse(‘t + 5 d’); // today + 5 days
Date.parse(‘next thursday’);
Date.parse(‘February 20th 1973′);
Date.parse(‘Thu, 1 July 2004 22:30:00′);
Um site que utiliza bastante este recurso é o Remember the milk e, particularmente, eu acho bem interessante. Outra coisa legal é a parte de testes que eles fizeram
Date.Specification = new Specification({
'Overview': {
setup: function() { this.baseline = new Date('7/8/2004') },
'July 8th, 2004 : Typical': {
run: function() { this.date = Date.parse('July 8th, 2004') },
assert: function() { return this.baseline.equals( this.date ) }
},
'jul-08-04 : Abbreviated': {
run: function() { this.date = Date.parse('jul-8-04') },
assert: function() { return this.baseline.equals( this.date ) }
},
'07/08/04 : Numeric': {
run: function() { this.date = Date.parse('07/08/04') },
assert: function() { return this.baseline.equals( this.date ) }
}
)
Não sei a opinião de vocês, mas eu não gosto muito do tratamento de datas em Javascript e essa biblioteca fornece uma boa ajuda. Espero que gostem e façam bom proveito impressionando seus usuários

Vinícius Araújo
04-12-2008 às 10:51:16
Alberto
04-12-2008 às 11:31:13