Javascript 日期格式自动从';年月日';至';年月日';

Javascript 日期格式自动从';年月日';至';年月日';,javascript,arrays,date,Javascript,Arrays,Date,我有一个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();

我有一个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>

函数比较(id)
{
var monName=新数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
var d=新日期(id);
var curr_date=d.getDate();
var curr_month=d.getMonth();
var curr_year=d.getFullYear();
返回(当前日期+“”+monName[当前月份]+“”+当前年份);
}
然后这个日历标签:

<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”,那么它将返回“2014年12月5日”

我没有声明任何日期格式,除了上面显示的日期选择器,它是'd MMM,yyyy'

在这之前,我尝试了许多不同类型的代码并出错,以尝试验证日期,但这一切都不起作用,因此我将其恢复为原始代码

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

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

我确实尝试使用console.log来找出问题所在,但没有错误消息

有人能告诉我这里发生了什么吗

为什么日期格式会自行更改

提前谢谢你

当您这样做时:

var d = new Date(id);
您实际上是在调用,这在很大程度上取决于实现。不幸的是,大多数浏览器中的默认解析器都希望nn/nn/nnnn等格式的字符串为月/日/年

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

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

您还应该在屏幕上提供提示,告诉用户使用哪种格式。

您所使用的
是否与此相关?是“未知原因[您]不知道为什么”?如果你知道原因,那就不是你不知道的未知原因了,是吗pbtw,您可以执行
-在支持浏览器的情况下,它允许用户以其计算机设置的格式选择日期。非常感谢您纠正我的语言错误,不幸的是,我无法更改我的日历标记:)@NiettheDarkAbsolHi@plootox,该水印没有任何功能:)我将其更改为“mm/dd/yyyy”,以提醒自己在试图修复代码的其他部分时dateformat的更改:)嗨!是的,我的“屏幕提示”是水印,是的,当我解决了这个问题后,我会更改水印,我将它保留在“mm/dd/yyyy”作为我自己的提醒,因为我还有其他错误需要处理:(请您将上述内容整合到我的代码中,以便我能更好地理解它的工作原理?嗨!我用我的代码替换了您的代码,它工作了!我不再需要数组了!但是我需要的格式是d,MMM yyyy,那么我可以知道如何修改上述内容以使其如此吗?现在它打印“日-月-日-年hr:min”:ss'