Javascript日期时间验证
当我尝试验证以下日期时,只有一天得到验证。月份和年份没有得到验证。有人能推荐一下代码吗?提前谢谢!!我使用的日期格式是dd/mm/yyyy!!我正在使用IE7(这里没有其他选项)Javascript日期时间验证,javascript,validation,date,calendar,Javascript,Validation,Date,Calendar,当我尝试验证以下日期时,只有一天得到验证。月份和年份没有得到验证。有人能推荐一下代码吗?提前谢谢!!我使用的日期格式是dd/mm/yyyy!!我正在使用IE7(这里没有其他选项) 函数日期检查(){ 风险值日期; var logDate=document.getElementById(“f4”).value; var actionDate=document.getElementById(“f5”).value; var closureDate=document.getElementById(“f
函数日期检查(){
风险值日期;
var logDate=document.getElementById(“f4”).value;
var actionDate=document.getElementById(“f5”).value;
var closureDate=document.getElementById(“f6”).value;
var lDate=新日期(logDate);
var cDate=新日期(closureDate);
var aDate=新日期(actionDate);
如果(cDate日期)日期=3;
如果(当前日期
不幸的是,你不能像那样比较日期。 您可以这样比较日期:
var date1 =new Date(logDate);
var date2 = new Date(closureDate);
if(date1.getTime() < date2.getTime()) {
//date1 is smaller than date2
}
var date1=新日期(logDate);
var date2=新日期(closureDate);
if(date1.getTime()
getTime
将日期返回为时间戳(从纪元开始的毫秒)试试这个
function getDateFromFormat(val, format)
{
val = val + "";
format = format + "";
format = format.replace('mm', 'MM');
var i_val = 0;
var i_format = 0;
var c = "";
var token = "";
var token2 = "";
var x, y;
var now = new Date();
var year = now.getYear();
var month = now.getMonth() + 1;
var date = 1;
var hh = now.getHours();
var mm = now.getMinutes();
var ss = now.getSeconds();
var ampm = "";
while (i_format < format.length)
{
// Get next token from format string
c = format.charAt(i_format);
token = "";
while ((format.charAt(i_format) == c) && (i_format < format.length))
{
token += format.charAt(i_format++);
}
// Extract contents of value based on format token
if (token == "yyyy" || token == "yy" || token == "y")
{
if (token == "yyyy")
{
x = 4;
y = 4;
}
if (token == "yy")
{
x = 2;
y = 2;
}
if (token == "y")
{
x = 2;
y = 4;
}
year = _getInt(val, i_val, x, y);
if (year == null)
{
return 0;
}
i_val += year.length;
if (year.length == 2)
{
if (year > 70)
{
year = 1900 + (year - 0);
}
else
{
year = 2000 + (year - 0);
}
}
}
else if (token == "MMM" || token == "NNN")
{
month = 0;
for (var i = 0; i < MONTH_NAMES.length; i++)
{
var month_name = MONTH_NAMES[i];
if (val.substring(i_val, i_val + month_name.length).toLowerCase() == month_name.toLowerCase())
{
if (token == "MMM" || (token == "NNN" && i > 11))
{
month = i + 1;
if (month > 12)
{
month -= 12;
}
i_val += month_name.length;
break;
}
}
}
if ((month < 1) || (month > 12))
{
return 0;
}
}
else if (token == "EE" || token == "E")
{
for (var i = 0; i < DAY_NAMES.length; i++)
{
var day_name = DAY_NAMES[i];
if (val.substring(i_val, i_val + day_name.length).toLowerCase() == day_name.toLowerCase())
{
i_val += day_name.length;
break;
}
}
}
else if (token == "MM" || token == "M")
{
month = _getInt(val, i_val, token.length, 2);
if (month == null || (month < 1) || (month > 12))
{
return 0;
}
i_val += month.length;
}
else if (token == "dd" || token == "d")
{
date = _getInt(val, i_val, token.length, 2);
if (date == null || (date < 1) || (date > 31))
{
return 0;
}
i_val += date.length;
}
else if (token == "hh" || token == "h")
{
hh = _getInt(val, i_val, token.length, 2);
if (hh == null || (hh < 1) || (hh > 12))
{
return 0;
}
i_val += hh.length;
}
else if (token == "HH" || token == "H")
{
hh = _getInt(val, i_val, token.length, 2);
if (hh == null || (hh < 0) || (hh > 23))
{
return 0;
}
i_val += hh.length;
}
else if (token == "KK" || token == "K")
{
hh = _getInt(val, i_val, token.length, 2);
if (hh == null || (hh < 0) || (hh > 11))
{
return 0;
}
i_val += hh.length;
}
else if (token == "kk" || token == "k")
{
hh = _getInt(val, i_val, token.length, 2);
if (hh == null || (hh < 1) || (hh > 24))
{
return 0;
}
i_val += hh.length;
hh--;
}
else if (token == "mm" || token == "m")
{
mm = _getInt(val, i_val, token.length, 2);
if (mm == null || (mm < 0) || (mm > 59))
{
return 0;
}
i_val += mm.length;
}
else if (token == "ss" || token == "s")
{
ss = _getInt(val, i_val, token.length, 2);
if (ss == null || (ss < 0) || (ss > 59))
{
return 0;
}
i_val += ss.length;
}
else if (token == "a")
{
if (val.substring(i_val, i_val + 2).toLowerCase() == "am")
{
ampm = "AM";
}
else if (val.substring(i_val, i_val + 2).toLowerCase() == "pm")
{
ampm = "PM";
}
else
{
return 0;
}
i_val += 2;
}
else
{
if (val.substring(i_val, i_val + token.length) != token)
{
return 0;
}
else
{
i_val += token.length;
}
}
}
// If there are any trailing characters left in the value, it doesn't match
if (i_val != val.length)
{
return 0;
}
// Is date valid for month?
if (month == 2)
{
// Check for leap year
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{ // leap year
if (date > 29)
{
return 0;
}
}
else
{
if (date > 28)
{
return 0;
}
}
}
if ((month == 4) || (month == 6) || (month == 9) || (month == 11))
{
if (date > 30)
{
return 0;
}
}
// Correct hours value
if (hh < 12 && ampm == "PM")
{
hh = hh - 0 + 12;
}
else if (hh > 11 && ampm == "AM")
{
hh -= 12;
}
var newdate = new Date(year, month - 1, date, hh, mm, ss);
return newdate.getTime();
}
谢谢!!下面的工作很好 我明白了。它很好用
var d1=logDate.split(/[\-\ \:]/g);
var d2=closureDate.split(/[\-\ \:]/g);
var d3=actionDate.split(/[\-\ \:]/g);
var lDate = new Date(d1[2], d1[1]-1, d1[0]);
var cDate = new Date(d2[2], d2[1]-1, d2[0]);
var aDate = new Date(d3[2], d3[1]-1, d3[0]);
其余代码与我的问题中的代码相同。您可以尝试以下函数,该函数将日期解析为“dd/MM/yyyy HH:MM”格式
function GetParsedDate(dt) {
try {
var dtValue = null;
var arr1 = dt.split('/');
var year = 0; var month = 0; var day = 0; var hour = 0; var minute = 0; var sec = 0;
if (arr1.length == 3) {
var arr2 = arr1[2].split(' ');
if (arr2.length == 2) {
var arr3 = arr2[1].split(':');
try {
year = parseInt(arr2[0], 10);
month = parseInt(arr1[1], 10);
day = parseInt(arr1[0], 10);
hour = parseInt(arr3[0], 10);
minute = parseInt(arr3[1], 10);
//sec = parseInt(arr3[2], 10);
sec = 0;
dtValue = new Date(year, month - 1, day, hour, minute, sec);
}
catch (er) { alert('GetParsedDate (1): ' + er); }
}
}
return dtValue;
}
catch (err) { alert('GetParsedDate: ' + err); }
}
基本上它比较两个数字。这实际上应该行得通。你可以发布你的两个日期,我可以试试吗?这些日期是由用户在JSP页面上给出的。我使用了日期选择器来选择日期。
var d1=logDate.split(/[\-\ \:]/g);
var d2=closureDate.split(/[\-\ \:]/g);
var d3=actionDate.split(/[\-\ \:]/g);
var lDate = new Date(d1[2], d1[1]-1, d1[0]);
var cDate = new Date(d2[2], d2[1]-1, d2[0]);
var aDate = new Date(d3[2], d3[1]-1, d3[0]);
function GetParsedDate(dt) {
try {
var dtValue = null;
var arr1 = dt.split('/');
var year = 0; var month = 0; var day = 0; var hour = 0; var minute = 0; var sec = 0;
if (arr1.length == 3) {
var arr2 = arr1[2].split(' ');
if (arr2.length == 2) {
var arr3 = arr2[1].split(':');
try {
year = parseInt(arr2[0], 10);
month = parseInt(arr1[1], 10);
day = parseInt(arr1[0], 10);
hour = parseInt(arr3[0], 10);
minute = parseInt(arr3[1], 10);
//sec = parseInt(arr3[2], 10);
sec = 0;
dtValue = new Date(year, month - 1, day, hour, minute, sec);
}
catch (er) { alert('GetParsedDate (1): ' + er); }
}
}
return dtValue;
}
catch (err) { alert('GetParsedDate: ' + err); }
}