それはいけません。すべての文化に共通する日付表記はありません。2003 年 1 月 2 日の例は特にわかりやすい例です。それを作成した人物が使用していた文化的慣習に関する信頼できる情報がなければ、それが何を意味するのかを知ることはできません。実際、en-US (米国英語) と en-GB (英国英語) を区別する必要があります。
Globalize.js ライブラリは、このバリエーションを削除するためではなく、対処することを目的としています。
It is possible to allow different date notations e.g. as follows (code excerpt from my book [Going Global with JavaScript and Globalize.js][1]):
function read(dateInput) {
var languages = ['en', 'fi', 'sv', 'ru'];
var formats = ['d', 'D'];
var date;
for(var langNr in languages) {
for(var fmtNr in formats) {
date = Globalize.parseDate(dateInput,formats[fmtNr],languages[langNr]);
if(date != null) {
return date;
}
}
}
return null;
}
これにより、(米国) 英語、フィンランド語、スウェーデン語、およびロシア語で使用される短い日付表記と長い日付表記が可能になるため、ユーザーがこれらの言語のいずれかを使用することが期待される状況にかなり自由で適しています。
しかし、追加するロケールが増えるほど、あいまいさが生じます。1/2/2003 のような表記がさまざまなロケールで許可されているが、それらに複数の意味がある場合、ループ構造は適用される意味を定義します。これは、入力がユーザーの意図とは異なる意味で取られることを意味する可能性があります。このため、すべて数値の日付表記は避けたほうがよい場合があります。月の名前を必要とする形式は、はるかに安全です。
2003-02-01 のような形式は原則として明確ですが、原則としてのみであり、ほとんどの人にとって不自然に見えます。ただし、Globalize.js ではそのような形式を読み取ることができます。形式を明示的に指定するだけです。