2016-05-31 3 views
0

Ich habe eine Zeichenfolge, die in eine Funktion kommt, diese Zeichenfolge ist ein Datum aus Schweden und ist 2016 maj 01 formatiert. In diese Funktion wird der Ländercode für das Gebietsschema sv-se übernommen. Ich muss die Datumszeichenfolge in ein gültiges Datumsobjekt konvertieren, auf das ich dann das Gebietsschema anwenden kann.Javascript Gebietsschema Datumsumwandlungen

Dies ist für die globale Datumsvalidierung.

Bis jetzt habe ich

var date = new Date(); 
Intl.dateTimeFormat(locale, options).format(date); 

Ich möchte jedoch in der Lage sein new Date("2016 maj 01") da dies nicht Englisch ist dies ein ungültiges Datum ist. Kann ich das Gebietsschema verwenden, um dieses in ein gültiges Datumsobjekt umzuwandeln?

Es wurde vorgeschlagen, dass mein Problem einem anderen ähnlich ist. Die Art, wie mein Problem anders ist, ist, dass ich den Monat als abgekürzten Monatsnamen habe. Wenn der Monat numerisch angezeigt würde, wäre das kein Problem.

+0

Mögliches Duplikat [JS: new Date() nicht Datumszeichenfolge in meinem eigenen locale zu akzeptieren (d/m/y)] (http://stackoverflow.com/questions/7165483/js-new-date-is-not-accepting-date-string-in-my-own-locale-dmy) –

+0

leider nicht, mein Monat kommt herein als eine abgekürzte Zeichenfolge kein numerischer Wert (Maj nicht 5) –

Antwort

1

Wie ich bemerkte, ist es wahrscheinlich ein Duplikat einer bestehenden Frage. JavaScript Date-Objekt kann nicht aus lokalisierter Zeichenfolge erstellt werden.

aber Sie wan Ihr eigenes Datum Baumeister aus Schweden machen:

Date.fromSwedish = (function() { 
 
    var months = { 
 
    'jan': 0, 
 
    'feb': 1, 
 
    'mar': 2, 
 
    'apr': 3, 
 
    'maj': 4 /*...*/ 
 
    }; 
 

 
    return function(s) { 
 
    var splitted = s.split(' '); 
 
    var year = splitted.length > 0 ? splitted[0] : 1970; 
 
    var month = splitted.length > 1 ? months[splitted[1].toLowerCase()] : 0 ; 
 
    var day = splitted.length > 2 ? splitted[2] : 1; 
 
    return new Date(year, month, day); 
 
    }; 
 
}()); 
 

 
document.write(Date.fromSwedish("2016") + "<br/>"); 
 
document.write(Date.fromSwedish("2016 feb") + "<br/>"); 
 
document.write(Date.fromSwedish("2016 maj 01") + "<br/>");

+0

das sieht gut aus, das Problem ist, ich brauche es für Dänisch, Finnisch und Norwegisch. Ich habe auf eine globale Lösung gehofft. –

+0

Ich fürchte, Sie müssen Ihre eigenen Versionen für andere Sprachen implementieren, oder finden Sie eine Globalisierung Bibliothek –

0

Ich glaube, Sie versuchen, das Gegenteil der Methode Date.prototype.toLocaleDateString zu tun(), die formatierte Zeichenfolge basierend auf den übergebenen Locale- und Optionsargumenten zurückgibt. Sie können mehr darüber lesen here.

Hier wollen Sie das Gegenteil von dem tun, was toLocaleDateString Verfahren der Fall ist, Sie wollen eine formatierte Datum String mit einem Locale geben, und Sie erwarten, dass es ein Datum Objekt zurückzukehren. Um dies zu tun, können Sie überprüfen, this post, ich hoffe, es kann Ihnen helfen, einen Vorsprung zu bekommen.

Auch, wenn Sie bequem sind externe Bibliotheken zu verwenden, dann können Sie für die Lokalisierung Bibliotheken erkunden wie moment.js

+0

, die hilfreich ist, aber ich habe immer noch das Problem meines Datums mit einem Namen drin. Mein Datum ist nicht rein numerisch. –