你不能。没有所有文化都共享的日期符号。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 中阅读此类格式;您只需要明确指定格式。