Datum auf dem iOS-Gerät NaN zurück
ich bin derzeit an der Entwicklung einer cordova web-basierte Anwendung mit ionic und angularjs. jetzt habe ich einen service, gibt einen formatierten Zeit die Art, wie mein Kunde will es.. das problem mit diesem ist, dass, während es funktioniert auf android und im browser, es zeigt NaN auf einem iOS-Gerät. Das Datum füge ich eine Datenbank in timestamp : JETZT() format, gibt es eine Lösung für dieses Problem?
dies ist mein service-Datum:
.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;
}
}]);
Es bedeutet wahrscheinlich, dass das "Datum" Zeichenfolge, die Sie beginnen mit ist nicht verstanden als gültiges Datumsformat in iOS. Wenn Sie konstruieren eine Date-Instanz mit einem unparseable-saite, dann alle APIs zurück
Sollten Sie formatieren den string in ein standard-format (ISO -) und ich bin mir ziemlich sicher, dass es funktionieren wird
es ist ein mysql-timestamp-NOW () - format-string direkt aus der db
Das erzeugt eine datetime-Wert, der nah ist nach ISO8601, aber nicht genau. Wenn Sie möchten, um analysiert zu werden, korrekt in allen Browsern, die Sie benötigen, um diese zu formatieren oder analysieren Sie es selbst (oder eine Bibliothek)
Danke @Ian Formatierung ja behoben.
NaN
.Sollten Sie formatieren den string in ein standard-format (ISO -) und ich bin mir ziemlich sicher, dass es funktionieren wird
es ist ein mysql-timestamp-NOW () - format-string direkt aus der db
Das erzeugt eine datetime-Wert, der nah ist nach ISO8601, aber nicht genau. Wenn Sie möchten, um analysiert zu werden, korrekt in allen Browsern, die Sie benötigen, um diese zu formatieren oder analysieren Sie es selbst (oder eine Bibliothek)
Danke @Ian Formatierung ja behoben.
InformationsquelleAutor Sjoerd de Wit | 2014-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wurde dieser Dank @Ian seinem Kommentar
geändert:
:
var t = date.split(/[- : T]/);
und vergessen Sie nicht, parseInt() für jedes element des Arraysnew Date(parseInt(t[0]), parse...
Dank Sjoerd! Gehalten!
InformationsquelleAutor Sjoerd de Wit
Der Grund des Problems ist das iPhone Safari bietet keine Unterstützung für die
Y-m-d H:i:s
(ISO 8601) - Datum-format. Ich habe auf dieses problem in 2017/7/19, ich verstehe nicht, warum Safari haben das problem nicht behoben, nach zwei Jahren.Verweise ich auf die Antwort von Sjoerd, danke Sjoerd, nur umschreiben einer Funktion zu tun, die Datum-Konvertierung, wenn Sie haben viele Datum verarbeitet werden müssen. Nachdem Sie ein Datum(muss
Y-m-d H:i:s
format) vom server, können Sie mit der Funktion konvertieren Sie das Datum in dem format, in dem iOS-Gerät lösen konnte und anderen Browsern könnten, zu beheben.Ich das problem wenn ich Schreibe ajax über Datum, hoffe die Lösung wird anderen helfen, stieß ein ärgerliches problem.
InformationsquelleAutor Key Shang
installieren momentjs durch
npm install-moment-speichern
intitilize das neue Datum mit
var Datum = moment(yourDate).format()
var formatedDate = new Daten(Datum)
hoffe, dass dies das Problem beheben
InformationsquelleAutor Zeeshan Ahmed