0

在 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;

它返回错误。

函数 fn_ConvTo24Format(MsTimeVal) { if(MsTimeVal=='') { return -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;
}
4

3 回答 3

0

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

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

我认为这不是进行时间比较的好方法。将更好地获取 Date 类示例并使用它。

于 2012-11-09T11:45:28.150 回答
0

也许从来没有使用过 Tim1Val 是问题的一部分?

于 2012-11-09T10:01:54.940 回答
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))

哦,正如彼得威尔金森所说,你永远不会使用 Tim1Val。

于 2012-11-09T10:09:26.287 回答