DateオブジェクトせずにJavaScriptで日付を操作します
-
20-09-2019 - |
質問
私が米国にそれinherintlyデフォルトとしてJavaScriptのDateオブジェクトを使用することはできません表示されますが、日付ストリングと初期化時にさかのぼります。日付オブジェクト
に任意の文化情報を渡す方法はありませんすなわち。どんなにクライアントが設定がされているロケール何
クライアントロケールが英国だった場合は、のvar D =新しい日付(「2009年8月10日」)は、常に2009年10月8日ではなく2009年8月10日を表す日付オブジェクトを作成します。
は、だから私の要件は簡単に日/ヶ月/年を加算/減算することができるようであることを指定した
Dateオブジェクトなしで簡単にこれを行うための巧妙な方法があります私がやらなければならないことは、日付(または日付の文字列表現)に日を追加です。ので、私のコードは、それが「2009年10月8日」それは「2009年10月9日」にそれをwhacksが、それはそれはそれは希望英国にあった検出された場合のような文字列を見たとき、ロケールsetttingsは米国である検出した場合それを日付の英文字列表現を知っていて、「2009年9月10日」
にそれをフラフラしています解決
は、JavaScriptの上の日付操作およびローカリゼーションのために、私はいつも DateJS のライブラリをお勧めします。
このライブラリは、Dateオブジェクトの使用を抽象化し、非常に良いローカライズオプション、強力な日付の解析とフォーマットを持っており、それはまた、非常に素晴らしい流暢なAPIを持っています。
他のヒント
を知っているを使用すると、フォーマットされた入力DD / MM / YYYY取得しているあなたは、簡単に正しい日付を組み立てることができます。
function britDay(D){
D= D.match(/\d+/g);
return new Date(+D[2], D[1]-1, +D[0]);
}
toLocaleDateStringは、ユーザーが期待する形式で日付を返します。
特定のフォーマットルールをれる従うユーザ入力に依拠optimistic- これはほとんどのサイトは、月、日、年のための独立した、ラベルされた入力または選択フィールドを使用する理由である。
あなたはおそらくこれまでに86,400 * 1000ミリ秒を追加し、それは今までに一日を追加するのは簡単だということを知っています。あなたのロケールで表示することが課題となっているようですね。 Date.toLocaleStringは()あなたのために正しいことをしない?
dojo.date.locale.parseは、お好みのロケールに従ってフォーマットされた文字列を解析することができるようになります。それはunicode.org/cldrをオフに基づいて、文化的データのテーブルを持っています。詳細については、この記事を参照してください。