我需要使用一些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
一样的值。
那么我如何查看其他日期的给定日期呢?
答案 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 :-)
}