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;

false を返しています。

関数 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

これらの値は文字列として入力されると思います。2つを比較すると、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を使用することはありません。

于 2012-11-09T10:09:26.287 に答える
0

関数は、文字列と数値のいくつかのタイプのデータを返します。1種類のメイクを使用

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

時間を比較するのは良くないと思います。Dateクラスの模範を取得して、それを操作する方がよいでしょう。

于 2012-11-09T11:45:28.150 に答える
0

おそらく、Tim1Val を使用していないことが問題の一部ではないでしょうか?

于 2012-11-09T10:01:54.940 に答える