我正在开发一个 Backbone 应用程序,并且从 REST API 数据中,我得到了 Mongo 以 ISO 格式YYYY-MM-DDT12:00:00.000Z生成的日期。为了在前端视图(jqgrid colmodel)表格网格视图中以人类可读的方式显示,我需要向用户展示一个简单的格式DD.MM.YYYY。条件是,我需要通过仅将后端日期的视图转换为这种新格式来转换日期。
有任何想法吗?
我正在开发一个 Backbone 应用程序,并且从 REST API 数据中,我得到了 Mongo 以 ISO 格式YYYY-MM-DDT12:00:00.000Z生成的日期。为了在前端视图(jqgrid colmodel)表格网格视图中以人类可读的方式显示,我需要向用户展示一个简单的格式DD.MM.YYYY。条件是,我需要通过仅将后端日期的视图转换为这种新格式来转换日期。
有任何想法吗?
您可以使用moment.js解析字符串并以人类可读的格式输出。
你可以使用这样的函数:
var convertDate = function(date){
var date = date.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})/);
if(date == null){
return false;
}else{
var dateObj = {
dateFormat1 : date[3] + '.' + date[2] + '.' + date[1],
dateFormat2 : date[1] + '-' + date[2] + '-' + date[3],
dateFormat3 : date[2] + '/' + date[3] + '/' + date[1],
time : date[4] + ':' + date[5] + ':' + date[6],
};
return dateObj;
}
};
var obj = console.log(convertDate('2013-04-09T12:00:00.000Z').dateFormat2);
我以某种方式通过编写自己的库使其工作。这只是您需要包含的代码实例,用于更改或转换来自服务器端 JSON 模式的日期。
代码:
cacheElements: function() {
this.$datePickers = this.$el.find('.datepicker');
this.$datePickerStart = this.$datePickers.filter('.start');
this.$datePickerEnd = this.$datePickers.filter('.end');
this.$loader = this.$el.find('.timeframe-loader');
},
render: function() {
this.$el.html(this.template(this.model));
this.cacheElements();
this.$datePickers.datepicker({ dateFormat: 'dd.mm.yy' });
this.delegateEvents();
return this;
},
_onError: function(model, error) {
this._hideLoader();
var $where;
if (error.where == 'startDate') {
$where = this.$datePickerStart.closest('div');
} else if (error.where == 'endDate') {
$where = this.$datePickerEnd.closest('div');
}
new Tooltip.View({
srcElement: $where,
content: error.message,
position: 'bottom'
});
},
_onClickSendData: function() {
var start = this.$datePickerStart.val();
var end = this.$datePickerEnd.val();
var startDate = humanDateStringToJSDateString(start);
var endDate = humanDateStringToJSDateString(end);
// If didn't actually change, do nothing:
var modelStartDate = this.model.get('startDate');
var modelEndDate = this.model.get('endDate');
if (this._compareYYYMMDD(new Date(startDate), modelStartDate) !== 0 || this._compareYYYMMDD(new Date(endDate), modelEndDate) !== 0) {
this._showLoader();
this.model.set({
startDate: new Date(startDate),
endDate: new Date(endDate)
});
}
},
_compareYYYMMDD: function(date1, date2) {
var num1 = dateToString(date1).replace('-','');
var num2 = dateToString(date2).replace('-','');
return date1 - date2;
},
_showLoader: function() {
this.$loader.show();
},
_hideLoader: function() {
this.$loader.hide();
},
setEndDate: function() {
this.$datePickerStart.val(dateToDottedString(addDays(new Date(), - App.state.get('timeframe'))));
this.$datePickerEnd.val(dateToDottedString(new Date()));
}
});
如果您在理解逻辑上有困难,请告诉我!
我怀疑 jQuery 有任何日期解析/格式化功能。
您需要自己解析它并转换为所需的格式。