【问题标题】:How to detect date format defined by browser?如何检测浏览器定义的日期格式?
【发布时间】:2013-05-31 14:57:13
【问题描述】:

我正在使用 HTML5 输入类型=日期字段,并且由于某些浏览器仍然不支持此功能,我想为只显示普通文本字段而不是日期字段的浏览器创建错误验证消息。此错误消息应如下所示

请按以下格式输入日期:...

但我需要找到浏览器设置的正确格式。有没有 php/js/jQuery 的方法来找出这个?

【问题讨论】:

  • 日期格式由操作系统而不是浏览器决定。您应该指定他们应该使用什么格式,因为我假设您将其保存到数据库中,因此这可以避免您更改数据库的输入
  • 我想这个问题之前有人问过stackoverflow.com/questions/10193294/…>
  • @jimmy 这个问题是关于 HTML5 日历日期选择器的;这个是在询问国际日期格式。
  • Is there any way to change input type="date" format?。它解释了日期输入的value 属性according to the spec 必须采用YYYY-MM-DD 格式。但是浏览器可以按照它想要的方式显示日期——通常是相同的格式,或者是用户的本地格式。

标签: javascript html date


【解决方案1】:

感谢@Jose Vega 的回答,我找到了非常简单的方法。

     var now=new Date(2013,11,31);
     var str=now.toLocaleDateString();
     str=str.replace("31","dd");
     str=str.replace("12","mm");
     str=str.replace("2013","yyyy");

错误信息:

"请输入日期格式:" + str

【讨论】:

  • 虽然,正如MDN docs 指出的那样,并不是每个人都使用西方国家使用的相同数字,所以“2013”​​可能根本不会出现在.toLocaleDateString 中。
  • @Blazemonger 没错,但它满足了我的需求。无论如何,这仅对讲英语的 ppl 有用,因为 dd,mm 和 yyyy 对其他人没有任何意义
【解决方案2】:

我使用globalize 库做了类似的事情。我不知道它的功能是否符合您的要求,但我知道它在处理不同文化方面做得很好。我使用window.navigator.userLanguage 来确定文化,然后将其提供给 globalize 图书馆来做它的事情。我在处理货币和数字方面取得了成功。

编辑:看看这是否有帮助:

var now=new Date();
alert(now.toLocaleString());

取自How format JavaScript Date with regard to the browser culture?

参考Displaying proper date format depending on culture

【讨论】:

  • 谢谢,但没有更简单的方法吗?因为该格式显然必须保存在浏览器中的某个位置
  • 对于一个非常复杂的问题,您不会得到简单的答案。正如@RyanB 指出的那样,日期格式是由操作系统而不是浏览器设置的。但是,您可以使用.toLocaleDateString() 以本地格式输出特定的Date 对象。
  • 浏览器在显示日期输入方面不受限制。在撰写本文时,Chrome 拥有最广泛的日期支持 [3]。它使用用户的本地日历格式显示日期选择器。 Opera (v10.6+) 也显示日期选择器,但以有线格式显示日期。其他浏览器,例如 Firefox 20 和 Internet Explorer 9/10 会显示一个有线格式的文本输入字段。
【解决方案3】:

为什么不允许用户以他们喜欢的任何格式输入日期。

例如我是美国的游客,浏览器说我使用格式 mm/dd/YYYY 而不是我的原生 dd.mm.YYYY。

只需获取用户输入的任何日期并用Date.parse()解析它

【讨论】:

  • 因为那样你就不能确定1/5/13 是指 1 月 5 日还是 5 月 1 日。
  • 是的,你不能。但是,如果您将检测浏览器格式,您能确定吗?没有 dd/mm/YY 格式。只有 mm/dd/YY。如果用户不想输入正确的日期,你不会让他这样做。
  • @Blazemonger 这正是我要说的
  • 我的意思有一个很好的例子。如果您使用谷歌日历,请尝试创建一个新活动。您可以输入任何格式的日期。当输入失去焦点时,它会解析您的日期并将其转换为通用格式。因此,即使您犯了错误,您也会立即看到结果。
猜你喜欢
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多