【发布时间】:2014-10-30 15:40:17
【问题描述】:
我目前正在使用 ionic 和 angularjs 开发一个基于 Cordova Web 的应用程序。现在我创建了一个服务,它以我的客户想要的方式返回格式化时间。问题是,虽然它可以在 android 和浏览器上运行,但它在 iOS 设备上显示 NaN。我插入的日期来自时间戳:NOW() 格式的数据库,有解决办法吗? 这是我的约会服务:
.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;
}
}]);
【问题讨论】:
-
这可能意味着您开始使用的“日期”字符串在 iOS 中不被理解为有效的日期格式。如果您使用不可解析的字符串构造 Date 实例,则所有 API 都会返回
NaN。 -
您应该以标准格式 (ISO) 格式化字符串,我很确定它会起作用
-
这是一个直接来自数据库的mysql时间戳NOW()格式字符串
-
@SjoerdDeWit 生成的日期时间接近 ISO8601,但不完全一致。如果希望在所有浏览器中都能正确解析,需要格式化,或者自己解析(或者用库)
-
感谢@Ian 格式化它确实修复了它。
标签: javascript angularjs datetime webkit