比较日期javascript

时间:2011-04-26 20:59:24

标签: javascript jquery asp.net vb.net

我需要使用一些javascript(jquery)来验证不同的日期。

我有一个文本框,来自jquery的输入掩码(http://plugins.jquery.com/plugin-tags/inputmask)。我使用的面具是“d / m / y”。

现在我已经设置了一个CustomValidator函数来验证日期。

我需要2个功能。一个是检查给定日期是否大于18年前。你必须年满18岁。 用于检查日期是否未来的功能之一。它只能在过去。

该功能类似于

function OlderThen18(source, args) {
}

function DateInThePast(source, args) {
}

如您所知,使用args.Value返回的值为27/12/1987

但我如何在功能中检查这个日期?这样我就可以将args.IsValid设置为True或False。

我尝试将从掩码文本框中返回的字符串(27/12/1987)解析为日期,但我总是得到一个像27/12/1988一样的值。 那么我如何查看其他日期的给定日期呢?

4 个答案:

答案 0 :(得分:1)

尝试此操作:

var d = new Date(myDate);
var now = new Date();
if ((now.getFullYear() - d.getFullYear()) < 18) {
    //do stuff
}

答案 1 :(得分:1)

简单的方法是在提供的日期增加18年,看看结果是今天还是更早,例如:

// Input date as d/m/y or date object
// Return true/false if d is 18 years or more ago
function isOver18(d) {
  var t;
  var now = new Date();
  // Set hours, mins, secs to zero
  now.setHours(0,0,0);

  // Deal with string input
  if (typeof d == 'string') {
    t = d.split('/');
    d = new Date(t[2] + '/' + t[1] + '/' + t[0]);
  }

  // Add 18 years to date, check if on or before today
  if (d.setYear && d.getFullYear) {
    d.setYear(d.getFullYear() + 18);
  }
  return d <= now;
}

// For 27/4/2011
isOver18('27/4/2011'); // true
isOver18('26/4/2011'); // true
isOver18('28/4/2011'); // false

答案 2 :(得分:0)

javascript日期对象非常灵活,可以处理许多日期字符串。 您可以比较两个Date对象或使用Date接口方法,例如getSeconds() getFullYear()来推断有关日期的有用数据。

请参阅Date object reference formore详细信息。

答案 3 :(得分:0)

您需要构建,修改和比较Date objects - 类似这样的内容:

// str should already be in dd/mm/yyyy format
function parseDate(str) {
    var a = str.split('/');
    return new Date(parseInt(a[2], 10), // year
                    parseInt(a[1], 10) - 1, // month, should be 0-11
                    parseInt(a[0], 10)); // day
}

// returns a date object for today (at midnight)
function today() {
    var date = new Date();
    date.setHours(0, 0, 0);
    return date;
}

function DateInThePast(str) {
    // date objects can be compared like numbers
    // for equality (==) you'll need to compare the value of date.getTime()
    return parseDate(str) < today();
}

function OlderThan18(str) {
    // left as an exercise for the reader :-)
}