Date sur l'appareil iOS renvoie NaN
je suis actuellement à l'élaboration d'un cordova application basée sur le web avec l'ionique et angularjs. maintenant, j'ai créé un service qui retourne une formaté temps la façon dont mon client le souhaite.. le problème c'est que même s'il fonctionne sur android et dans le navigateur, il affiche NaN sur un appareil iOS. La date je l'insert est à partir d'une base de données timestamp : MAINTENANT (), est-il un correctif pour cela?
c'est ma date de service:
.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;
}
}]);
Cela signifie probablement que la "date" de la chaîne, vous commencez avec n'est pas comprise comme un valide le format de date dans iOS. Si vous construisez une instance de Date avec un unparseable chaîne, toutes les Api de retour
Vous devez formater la chaîne de caractères dans un format standard (ISO) et je suis assez sûr qu'elle fonctionne
c'est un timestamp mysql MAINTENANT() chaîne de format directement à partir de la db
Qui produit une valeur datetime qui est proche de ISO8601, mais pas exactement. Si vous voulez qu'il soit analysé correctement dans tous les navigateurs, vous devez la formater, ou analyser vous-même (ou avec une bibliothèque)
Merci @Ian mise en forme en effet, il en fixe.
NaN
.Vous devez formater la chaîne de caractères dans un format standard (ISO) et je suis assez sûr qu'elle fonctionne
c'est un timestamp mysql MAINTENANT() chaîne de format directement à partir de la db
Qui produit une valeur datetime qui est proche de ISO8601, mais pas exactement. Si vous voulez qu'il soit analysé correctement dans tous les navigateurs, vous devez la formater, ou analyser vous-même (ou avec une bibliothèque)
Merci @Ian mise en forme en effet, il en fixe.
OriginalL'auteur Sjoerd de Wit | 2014-10-30
Vous devez vous connecter pour publier un commentaire.
Fixe ce grâce à @Ian son commentaire ,
changé cela:
:
var t = date.split(/[- : T]/);
et n'oubliez pas de parseInt() pour chaque élément du tableaunew Date(parseInt(t[0]), parse...
Grâce Sjoerd! Tenue!
OriginalL'auteur Sjoerd de Wit
La raison du problème est iPhone Safari ne supporte pas la
Y-m-d H:i:s
(ISO 8601) format de la date. J'ai rencontré ce problème dans 2017/7/19, je ne comprends pas pourquoi Safari n'a pas de résoudre le problème au bout de deux ans.Je me réfère à la réponse de Sjoerd, grâce Sjoerd, juste de le réécrire une fonction pour faire la conversion de date lorsque vous avez beaucoup de date doivent être traités. Une fois que vous obtenir une date(doit être
Y-m-d H:i:s
format) à partir du serveur, vous pouvez utiliser la fonction convertir la date au format iOS dispositif pourrait résoudre et les autres navigateurs pourraient résoudre.J'ai rencontré un problème lorsque j'écris ajax sur la date, j'espère que la solution sera d'aider les autres a rencontré le problème ennuyeux.
OriginalL'auteur Key Shang
installer momentjs par
npm install moment --enregistrer
intitilize la nouvelle date avec
var date = moment(yourDate).format()
var formatedDate = nouvelles données(date)
espère que cela résoudre le problème
OriginalL'auteur Zeeshan Ahmed