Extensões de fichário de data e hora para Kendo MVVM com Moment.js

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 utcfornecer 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());
}
}
});