只是为了说明我想要做的事情:
我有一个带有一个输入框的html页面,我想验证输入框中的文本是否是基于用户客户端区域设置的有效日期。因此,在美国,用户可以输入" 11/20/2013",英国的用户可以进入" 20/11 / 2013"。
<input type="text" id="dt" />
<input type="button" id="validate" value="validate" />
<script>
$(document).ready(function() {
$('#validate').click( function() {
if (isNaN(Date.parse($('#dt').val())) == true)
alert('date is invalid!');
else
alert('valid date');
});
});
</script>
似乎Date.parse()总是期望US格式(DD / MM / YYYY)。知道如何根据客户端区域设置进行验证吗?
答案 0 :(得分:1)
我不相信用户会在系统或浏览器中拥有正确的区域设置。我也不相信浏览器会正确地尊重这些设置。有时它会起作用,有时它不会。日期解析是高度特定于实现的。
相反,请考虑使用像moment.js这样的库。在应用程序的某个位置,您可以询问用户他们的语言和区域设置。然后,您可以使用它来了解如何正确解析本地日期。
例如:
moment.lang("en-us");
console.log(moment("01/02/2013","L").format("LL")); // "January 2 2013"
moment.lang("en-gb");
console.log(moment("01/02/2013","L").format("LL")); // "1 February 2013"
无论如何,您可能最好向用户显示他们在字段附近的格式,和/或使用datepicker控件。