javascript - 在我的日期验证中合并前导零

标签 javascript validation date

这是我当前的日期验证函数:

  isValidDate = function(day,month,year) {
    var dteDate;
    dteDate=new Date(year,month,day);
    return ((day.toString()===dteDate.getDate().toString()) && (month.toString()===dteDate.getMonth().toString()) && (year.toString()===dteDate.getFullYear().toString()));
  }

然后我检查字段:

checkFields = function() {
  var iDate = $("inspect_date").value;
  if(iDate.length > 0) {
    var a = iDate.split("/"); 
    if(isValidDate(a[0],a[1]-1,a[2]) == false){
      alert("You have entered an invalid date. Please amend!");
      return false;
    }

所以目前它不接受 dd/mm/yyy 格式的日期,这正是我想要的 - 该函数不喜欢前导零。

我尝试用这种方式修复它:

isValidDate = function(day,month,year) {
  var dteDate;
  dteDate=new Date(year,month,day);

  var day = dteDate.getDate();
  var month = dteDate.getMonth() + 1;
  var year = dteDate.getFullYear();

  var formatted =
      (day < 10 ? "0" : "") + day + "/"  +
      (month < 10 ? "0" : "") + month + "/"  +
      year;

  return ((day.toString()===dteDate.getDate().toString()) && (month.toString()===dteDate.getMonth().toString()) && (year.toString()===dteDate.getFullYear().toString()));
}

但是现在我的“返回”部分在进行比较时包含错误的值。

有人可以帮忙吗?

最佳答案

对于示例日期 "02/04/2012",函数的第一个变体将 "02", 3, "2012" 作为参数传递。然后,您的函数尝试将 "02""2" 进行比较,这显然是“不等于”。

您应该将数字作为数字进行比较。一元 + 运算符是将字符串转换为数字的快捷方式(+"01" 生成 1;您可以使用 parseInt 以及):

return
    +day === dteDate.getDate() && 
    +month === dteDate.getMonth() &&
    +year === dteDate.getFullYear();

Here is another way to validate dates使用 RegRx 和 JavaScript Date 对象。

关于javascript - 在我的日期验证中合并前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14876425/

相关文章:

javascript - 有福服务器(Node.js)通过 websocket 到浏览器中的 Xterm.js 客户端

javascript - 获取 Nightmare.JS (v 2.9.1) 屏幕截图缓冲区

javascript - Angularjs $timeout 不执行

validation - 用于列表验证的自定义 ConstraintValidator

php - 将日期时间插入数据库 PHP

c# - 获取给定日期的正确周数

javascript - 通过单击覆盖来关闭 react native 模式?

ruby-on-rails - rails : Keeping all the ActiveRecord "validates" lines in a separate file?

C# WPF,日期选择器验证

java - 如何从字符串构造日期