Javascript 使用cordova.globalization.stringToDate从jquery.getJSON修改数组中的日期对象
我有cordova插件全球化,我希望使用.dateToString来更改JSON对象中的日期时间Javascript 使用cordova.globalization.stringToDate从jquery.getJSON修改数组中的日期对象,javascript,jquery,arrays,cordova,cordova-plugins,Javascript,Jquery,Arrays,Cordova,Cordova Plugins,我有cordova插件全球化,我希望使用.dateToString来更改JSON对象中的日期时间 incoming JSON = [{"alphaID":"JV033","status":"open","dateadded":1433531166},{"alphaID":"JV032","status":"on hold","dateadded":1433530583}] 这是我的代码 document.addEventListener("deviceready", getJSONList,
incoming JSON = [{"alphaID":"JV033","status":"open","dateadded":1433531166},{"alphaID":"JV032","status":"on hold","dateadded":1433530583}]
这是我的代码
document.addEventListener("deviceready", getJSONList, false);
var dateToDisplay = ''
function getJSONList() {
$.getJSON("https://myserver.com/ajax_calls/list_sr_app.asp", function(e) {
e.forEach(function(arrayItem, index, thearray) {
var x = arrayItem.dateadded * 1000; //alert(new Date(x)); this works (un-adjusted dates of course)
//alert(displayDate(x)); this does NOT work - delivers undefined
thearray[index].arrayItem.dateadded = displayDate(x) // the assigment of the return of displayDate(x) does not work either
});
constructJSONList(e); //this function (not here) works
});
} // end of getJSONList()
function displayDate(d) {
navigator.globalization.dateToString(
new Date(d),
function(date) {
dateToDisplay = date.value; /* alert(dateToDisplay); - this alert works*/
},
function() {
dateToDisplay = 'Error getting dateString'
}, {
formatLength: 'short',
selector: 'date and time'
}
);
return dateToDisplay;
}
有两个问题:
alert(displayDate(14335311166000))等函数时代码>警报框中的结果为“未定义”,除非该调用来自函数内部(如上文注释所示)
您已经为“设备就绪”添加了事件侦听器,但在设备实际就绪之前,似乎没有完成获取json(并显示日期)的调用。在设备准备就绪之前,Cordova函数不会运行(不会定义)。 尝试此事件侦听器:
document.addEventListener( 'deviceready', onDeviceReady.bind( this ), false );
function onDeviceReady() {
// TODO: Cordova has been loaded. Perform any initialization that requires Cordova here.
getJSONList();
};
无论如何,这对我来说是可行的,如果我像你那样做事件监听器,调试器会给我“未定义”的“全球化”命令。你已经为“设备就绪”添加了事件监听器,但是看起来好像在设备实际就绪之前没有完成获取json(并显示日期)的调用。在设备准备就绪之前,Cordova函数不会运行(不会定义)。 尝试此事件侦听器:
document.addEventListener( 'deviceready', onDeviceReady.bind( this ), false );
function onDeviceReady() {
// TODO: Cordova has been loaded. Perform any initialization that requires Cordova here.
getJSONList();
};
无论如何,这对我来说是可行的,如果我像你那样做事件侦听器,调试器会给我“未定义”的“全球化”。谢谢@quilkin,全球化是可用的,因为我可以从警报(dateToDisplay)中获得警报;从循环每次迭代的dateToDisplay()内部。实际上,我的问题似乎是无法从该函数外部访问date.value。我已经用以下方法解决了对对象属性的赋值:e.forEach(函数(sr,I,rete){var x=e[I].dateadded*1000;e[I].dateadded=x;});这只是访问对象的正确部分的问题谢谢@quilkin,全球化是可用的,因为我可以从警报(dateToDisplay)获得警报;从循环每次迭代的dateToDisplay()内部。实际上,我的问题似乎是无法从该函数外部访问date.value。我已经用以下方法解决了对对象属性的赋值:e.forEach(函数(sr,I,rete){var x=e[I].dateadded*1000;e[I].dateadded=x;});这只是访问对象的正确部分的问题谢谢@quilkin,全球化是可用的,因为我可以从警报(dateToDisplay)获得警报;从循环每次迭代的dateToDisplay()内部。实际上,我的问题似乎是无法从该函数外部访问date.value。我已经用以下方法解决了对对象属性的赋值:e.forEach(函数(sr,I,rete){var x=e[I].dateadded*1000;e[I].dateadded=x;});这只是访问对象的正确部分的问题