我不得不说,我根本不是 Javascript 日期方面的专家……!例如,我查看了 DateJS,但是我的问题不仅仅是简单的日期转换(或者它应该是!)。
快速背景:我有一个服务调用,它返回一些 JSON 数据,其中包括来自 WCF/REST 的可怕的 Epoch 样式日期(我现在不能使用 Webapi - 这会给我原生 JSON.NET?)。
因此 JSON 对象的日期示例是:
开始日期:“/日期(1343378404560+0100)/”
现在,从我的调用返回的 JSON 包含我的 Wijmo 事件日历对象所需的更多信息,所以我认为可以,将为我的 Wijmo 事件对象创建一个 Javascript 函数/模型,并使用 jQuery MAP 函数仅选择我的字段需要。
我的 Javascript 事件模型如下所示:
function wijmoEventModel(in_id, in_calendar, in_subject, in_location, in_start, in_end, in_description, in_colour, in_allday, in_tag) {
this._id = in_id;
this._calendar = in_calendar;
this._subject = in_subject;
this._location = in_location;
this._start = jsonDate(in_start);
this._end = jsonDate(in_end);
this._description = in_description;
this._colour = in_colour;
this._allday = in_allday;
this._tag = in_tag;
// Public Properties/Methods
return {
id: this.id,
calendar: this._calendar,
subject: this._subject,
location: this._location,
start: this._start,
end: this._end,
description: this._description,
color: this._colour,
allday: this._allday,
tag: this._tag
}
};
所以,我有另一个使用 jQuery MAP 函数的小函数:
function returnWijmoCalendarObject(diaryEventData) {
// Using jQuery map, reduce our raw event data down to only the required wijmo calendar items
var _calobj = $.map(diaryEventData, function (fld) {
return new wijmoEventModel(fld.ID, fld.ResourceCalendarID, fld.EventTitle, fld.Location, fld.StartDate, fld.EndDate, fld.Description, fld.ResourceColour, fld.AllDay);
});
return {
calendardata: _calobj
}
};
所以上面的函数只是从我原始的完整 JSON 返回中选择所需的字段,并使用我的 Javascript 函数/模型返回一个新的“日历数据”JSON 对象,我可以将它与我的 Wijmo 事件日历一起使用。
还有一个小函数可以将 Epoch 样式的日期 "/Date(1343378404560+0100)/" 转换为(我认为!)一个真正的 Javascript Date 对象。像这样:
function jsonDate(rawDate) {
var d = new Date();
d.setMilliseconds = parseInt(rawDate.substr(6));
return d;
}
所以上面的第一个代码块当然使用了上面的小函数,希望将 Epoch 样式的原始日期转换为 Javascript 日期。
所以我的问题/问题是:
上面的模型和 jQuery 映射函数运行良好,我得到了一个完全符合我需要的结构的子集 JSON 对象,但是返回的日期(wijmoEventModel.start & end)不会作为 Javascript Date 对象返回?即使在那个 wijmoEventModel 中调试肯定有日期作为 JS 日期对象?
显然,我在这里缺少/不了解一些重要和基本的方面!!!
请!如果有人可以提供帮助,因为这让我发疯...
大卫。