gpt4 book ai didi

javascript - 验证传入的值是否可以转换为日期

转载 作者:行者123 更新时间:2023-11-28 20:29:02 25 4
gpt4 key购买 nike

我有一个文本框,用户应该在其中输入 mm/dd/yyyy 形式的日期。我试图确保情况确实如此,并且它们不会传入字符串。由于我在下面的代码中使用 new Date() 我可以理解 startDate/endDate 是日期,即使它们无效......所以基本上我正在寻找正确的方法来进行此验证

  function calculate() {
var start = document.getElementById("start").value;
var end = document.getElementById("end").value;
var startDate = new Date(Date.parse(start));
var endDate = new Date(Date.parse(end));
var daysBetween = parseInt((endDate - startDate)/(24*3600*1000));
var er = document.getElementById("errorResult");

if(!(startDate instanceof Date) || !(endDate instanceof Date)) {
er.innerHTML = "Dates must be of the form mm/dd/yyyy";
return;
} else if (endDate<startDate) {
er.innerHTML = "End date must be after start date!";
return;
} else {
er.innerHTML = "";
}

最佳答案

你可以试试这个

function isValidDate(date)
{
var matches = /^(\d{2})[-\/\.](\d{2})[-\/\.](\d{4})$/.exec(date);
if (matches == null) return false;
var d = matches[2], m = matches[1], y = matches[3];
var newDate = new Date(y, m, d);
return newDate.getDate() == d && newDate.getMonth() == m && newDate.getFullYear() == y;
}

在你的函数中,你可以检查

var start = document.getElementById("start").value;
var end = document.getElementById("end").value;
if ( isValidDate( start ) && isValidDate( end ) )
{
// valid
}

DEMO.

关于javascript - 验证传入的值是否可以转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com