iOS设备上的日期返回NaN
我目前正在开发一个cordova基于web的应用程序与离子和angularjs。现在我已经创建了一种服务,以我的客户想要的方式返回一个格式化的时间..这个问题是,虽然它适用于Android和浏览器,但它在iOS设备上显示NaN。我插入的日期是从时间戳中的数据库:NOW()格式,有没有解决这个问题? 这是我最新的服务:iOS设备上的日期返回NaN
.factory('displaydate',['$filter', function($filter) {
return function (date){
var maandarray = new Array('Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December');
var actiondate = new Date(date);
var today = new Date();
if(today.getDate() == actiondate.getDate()){
var hourssince = today.getHours() - actiondate.getHours()
var minutessince = today.getMinutes() - actiondate.getMinutes()
var secondssince = today.getSeconds() - actiondate.getSeconds()
if(hourssince > 0){
date = hourssince+'u';
}else if(minutessince > 0){
date = minutessince+'m';
}else{
date = secondssince+'s';
}
}else{
var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var diffDays = Math.round(Math.abs((today.getTime() - actiondate.getTime())/(oneDay)));
if(diffDays > 28){
var identifier = actiondate.getMonth() - 1;
var month = maandarray[identifier];
date = $filter('date')(actiondate,"d ") + month + $filter('date')(actiondate," yy " + " HH:" + "mm");
}else{
date = diffDays+'d';
}
}
return date;
}
}]);
修正此感谢@Ian他的评论,
改变了这个:
var actiondate = new Date(date);
这样:
var t = date.split(/[- :]/);
// Apply each element to the Date function
var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
var actiondate = new Date(d);
非常感谢,为json日期格式'var t = date.split(/ [ - :T] /);'并且不要忘记parseInt()为数组的每个元素'new Date(parseInt(t [0])) ,解析...' – bowpunya 2016-06-27 09:26:52
谢谢Sjoerd!举行了! – 2017-06-23 13:41:06
的原因问题是iPhone Safari不支持Y-m-d H:i:s
(ISO 8601)日期格式。我在2017/7/19遇到过这个问题,我不明白为什么Safari在两年后没有解决问题。
我指的是Sjoerd的答案,谢谢Sjoerd,当你需要处理很多日期时,将它重写为一个函数来进行日期转换。从服务器获得日期(必须为Y-m-d H:i:s
格式)后,可以使用函数将日期转换为iOS设备可以解析的格式,其他浏览器也可以解析。
function convertDateForIos(date) {
var arr = date.split(/[- :]/);
date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]);
return date;
}
我遇到的问题,当我写的日期阿贾克斯,希望该解决方案将帮助其他人遇到的恼人的问题。
这可能意味着您开始使用的“日期”字符串在iOS中不被理解为有效的日期格式。如果使用不可解析的字符串构造Date实例,则所有API返回'NaN'。 – Pointy 2014-10-30 15:47:08
你应该以标准格式(ISO)格式化字符串,我敢肯定它会工作 – 2014-10-30 15:53:34
它是一个MySQL时间戳NOW()格式字符串直接从db – 2014-10-30 15:54:49