Вы можете использовать momentjs для выполнения требования.
Вы также можете использовать в ExtJS. Вы можете проверить здесь с работающей Сенча скрипкой .
Фрагмент кода
Ext.application({
name: 'Fiddle',
launch: function () {
function randomDate(start, end) {
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
}
// Define store
Ext.define('DataStore', {
extend: 'Ext.data.Store',
alias: 'store.datastore',
pageSize: 50,
fields: [
'title', 'forumtitle', 'forumid', 'username', {
name: 'replycount',
type: 'int'
}, {
name: 'lastpost',
convert: function (v, r) {
let date = randomDate(new Date(2018, 0, 1), new Date());
return moment(date).fromNow();
}
},
'lastposter', 'excerpt', 'threadid'
],
remoteSort: true,
proxy: {
// load using script tags for cross domain, if the data in on the same domain as
// this page, an HttpProxy would be better
type: 'jsonp',
url: '//www.sencha.com/forum/topics-browse-remote.php',
reader: {
rootProperty: 'topics',
totalProperty: 'totalCount'
},
// sends single sort as multi parameter
simpleSortMode: true
}
});
Ext.create('Ext.grid.Panel', {
title: 'ExtJs Forum',
store: {
type: 'datastore'
},
autoLoad: true,
columns: [{
text: 'Forum Title',
dataIndex: 'forumtitle',
flex: 1
}, {
text: 'Last update',
dataIndex: 'lastpost',
flex: 1
}, {
text: 'Title',
dataIndex: 'title',
flex: 1
}],
bbar: {
xtype: 'pagingtoolbar',
displayInfo: true
},
height: 450,
renderTo: Ext.getBody()
});
}
});