2016-05-31 6 views
0

文字列が関数に入っています。この文字列はスウェーデンの日付で、2016 maj 01という形式です。この機能には、ロケールsv-seの国コードが渡されます。私は日付文字列を有効な日付オブジェクトに変換する必要があります。それにロケールを適用することができます。JavaScriptのロケールの日付変換

これは、グローバル日付検証用です。

これまでのところ、私は

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

を持っている私は、これは、これは無効な日付で、英語ではありませんので、しかしnew Date("2016 maj 01")を持つことができるようにしたいです。ロケールを有効な日付オブジェクトに変換することはできますか?

私の問題は他と似ていることが示唆されました。私の問題は違うのは、月が短縮名になっているということです。月が数値で表示された場合、これは問題ではない

+0

[JSの可能性の重複:新しいDate()(私自身のロケールで日付文字列を受け付けていませんD/M/y)](http://stackoverflow.com/questions/7165483/js-new-date-is-not-accepting-date-string-in-my-own-locale-dmy) –

+0

残念ながら、私の月が来る(数値5ではない)簡略化した文字列として –

答えて

1

私がコメントしたように、それはおそらく既存の質問の複製です。ローカライズされた文字列からJavaScript Dateオブジェクトを構築することはできません。

しかし、あなたはスウェーデン語から独自の日付ビルダーを作るWAN:

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

これは良いように見えますが、問題はデンマーク語、フィンランド語、ノルウェー語にも必要です。私はグローバルな解決を望んでいました。 –

+0

他の言語用に独自のバージョンを実装しなければならないか、またはグローバリゼーションライブラリ –

0

私はあなたが方法Date.prototype.toLocaleDateString(の反対をやろうとしていると思います)は、渡されたLocaleおよびoptions引数に基づいて書式設定された文字列を返します。あなたはそれについてもっと読むことができますhere

は今、ここにあなたがtoLocaleDateString方法が何の反対をしたい、あなたはロケールでフォーマットされた日付文字列を与えたい、とあなたはそれが日付オブジェクトを返すことを期待しています。これを行うには、this postをチェックしてください。私はそれがあなたの頭のスタートを得るのを助けることを願っています。あなたは、外部ライブラリを使用して快適である場合に

また、あなたのようなローカライズライブラリを探索することができますmoment.js

+0

が役に立つと思うけど、私の日付にはまだ名前がついているという問題があります。私の日付は純粋に数字ではありません。 –