Moment.js é uma ótima biblioteca para lidar com datas e horas, uma das coisas mais comuns que preciso fazer é ter um horário UTC representado como um horário local, então juntei este pequeno fichário para KendoUI.
Aqui está o código, ambos os binders assumem que moment.js está disponível quando eles são declarados na marcação, o uso está nos comentários do código.
Localdatetime irá converter qualquer UTC ou data-hora local geral para o formato de hora genérico do local atual (ou seja, aqui em Sydney, Austrália, é Fri Mar 08 2013 23:03:31 GMT+1100
.)
Para utc
fornecer a propriedade de data e hora como um carimbo de data / hora unix, um carimbo de data / hora js ms ou um tempo iso-utc (por exemplo, a saída de .toISOString()
) … para um horário local, qualquer entrada analisável é adequada, verifique os documentos moment.js para mais informações .
Adicionar um formatador seria relativamente trivial, por enquanto deixarei isso como um exercício para o leitor.
/*
format an iso UTC date as local
data-bind="localdatetime: property"
requires moment.js to do date parsing.
*/
kendo.data.binders.localdatetime = kendo.data.binders.text.extend({
refresh: function() {
var e = this.element;
var p = this.bindings.localdatetime.path;
var sr = this.bindings.localdatetime.source;
if(sr !== "") {
var d = sr[p];
$(this.element).text(moment(d).toString());
}
}
});
e, em palavras, veja os fromNow()
documentos de função de moment.js para mais detalhes em momentjs.com , basicamente o que diz na lata … alguns segundos atrás , 5 minutos atrás , um mês atrás etc.
/*
Represent datetime as time ago in words
data-bind="timeago: date_time_property"
requires moment.js
*/
kendo.data.binders.timeago = kendo.data.binders.text.extend({
refresh: function() {
var e = this.element;
var p = this.bindings.timeago.path;
var sr = this.bindings.timeago.source;
if(sr !== "") {
var d = sr[p];
$(this.element).text(moment(d).fromNow());
}
}
});