你不能。没有任何文化共享的日期符号。 1/2/2003的例子特别具有说明性:除非你有关于制作它的人使用的文化习俗的可靠信息,否则你无法知道它的含义。事实上,您需要区分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中阅读这些格式;你只需要明确指定格式。