日期格式自动从'dd/mm/yyy '& # 39; mm / dd / yyyy # 39;

date format automatically changed from 'dd/mm/yyyy' to 'mm/dd/yyyy'

本文关键字:mm dd yyyy yyy 格式 日期      更新时间:2023-09-26

所以我有这个javascript函数:

<script  type="text/javascript">
function CompareDates(id)
{
var monName = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec");
var d = new Date(id);
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();

return (curr_date + " " + monName[curr_month] + " " + curr_year);
}
</script>

然后这个日历标签:

<p:calendar
id="testDate"
styleClass="calendar" 
pattern="d MMM, yyyy"
maxlength="10"
onchange="$(this).val(CompareDates($(this).val()))"
onfocus="$(this).mask('99/99/9999');"
>
<p:watermark for="testDate" value="mm/dd/yyyy" />
</p:calendar>

并且由于某些未知的原因,文本框接受的默认日期格式是'mm/dd/yyyy'

例如,如果我输入"13-05-2014",那么它将返回一个错误,说明日期无效。

如果我输入"12-05-2014"那么它将返回"5 Dec, 2014"

我没有在任何地方声明任何日期格式,除了日期选择器,如上面所示,是'd MMM, yyyy'

在此发生之前,我尝试了许多不同类型的代码来验证日期,但是它都不起作用,所以我把它全部恢复到原始代码。

上次文本框接受的日期格式是'dd/mm/yyyy',它与我的javascript函数工作得很好,除了验证部分。

现在它仍然可以工作,只是日期格式更改为'mm/dd/yyyy'

我确实尝试使用console.log来查找错误,但没有错误消息。

谁能告诉我这是怎么回事?

为什么日期格式自己改变了?

提前感谢!

当你这样做的时候:

var d = new Date(id);

你实际上是在调用date。解析,这在很大程度上依赖于实现。不幸的是,大多数浏览器的默认解析器都希望nn/nn/nnnn格式的字符串是月/日/年。

可以通过手动解析字符串来避免这种情况。如果字符串是d/m/y,则:

function parseDMY(s) {
  var b = s.split(/'D/);
  return new Date(b[2], --b[1], b[0]);
}

你还应该在屏幕上提供提示,告诉用户使用什么格式