Javascript:在JavaScript函数中验证时的日期问题

时间:2012-11-09 09:58:20

标签: javascript validation

在Javascript函数中:

if (Tim2Val > Tim3Val && Tim2Val < Tim4Val)
    return true;
else
    return false;

如果我有像

这样的变量
Tim1Val=  8:00;
Tim2Val= 23:00;
Tim3Val= 01:00;
Tim4Val= 05:00

它回归真实。 (它应该返回false。你能告诉我我们如何解决这个问题吗?)

如果我有像

这样的变量
Tim1Val=  8:00;
Tim2Val= 23:00;
Tim3Val= 02:00;
Tim4Val= 05:00;

它返回false。

function fn_ConvTo24Format(MsTimeVal)     {      如果(MsTimeVal == '')      {       返回-1;      }      var A = MsTimeVal.split(/ \ D + /);      var locAMPos = MsTimeVal.indexOf('AM');      var locPMPos = MsTimeVal.indexOf('PM');

 if(locAMPos ==-1 && locPMPos ==-1)
 {
  return MsTimeVal;
 }
 if(locAMPos!= -1 && A[0] + '.' + A[1]=='12.00' )
 {
  return 0;

 }
 if(locPMPos!= -1 && A[0] + '.' + A[1]=='12.00' )
 {
  return 12;

 }

 if(locAMPos!= -1 && A[0] + '.' + A[1]=='12.00' )
 {
  return 0;

 }

 if(locAMPos!= -1)
 {
  return A[0] + '.' + A[1];
 }
 if(locPMPos!= -1)
 {
  return (parseFloat(A[0]) + 12) + '.' + A[1];
 }

 return MsTimeVal;
}

3 个答案:

答案 0 :(得分:0)

也许永远不会使用Tim1Val是问题的一部分?

答案 1 :(得分:0)

我认为这些值以字符串形式出现。如果你比较两者,Javascript会将它们转换为数字,从而有效地改变它们的价值。

“8:00”变为8,忽略分钟。

也许将你的小时和分钟转换为几分钟:

function toMinutes (value) {
    var parts = value.split(":");
    return Number(value[0]) * 60 + Number(value[1]);
}

var Tim1Val = "8:00";
var Tim2Val = "23:00";
var Tim3Val = "2:00";
var Tim4Val = "5:00";



if (toMinutes(Tim1Val) > toMinutes(Tim3Val) && toMinutes(Tim2Val) < toMinutes(Tim4Val))

哦,正如Peter Wilkinson所说,你永远不会使用Tim1Val。

答案 2 :(得分:0)

您的函数返回几种类型的数据:字符串和数字。 使用一种类型make

...
if(locAMPos!= -1)
{
   return parseFloat(A[0] + '.' + A[1]);
}
....

我认为进行时间比较不是好方法。 最好获得Date类示例并使用它。