3

「午前 10 時」、「午前 11 時」、「午後 12 時」などの形式の時刻を持つ 2 つの時刻ピッカー jquery コントロールがあります。これら 2 つの時刻選択の違いを取得するにはどうすればよいですか。

たとえば、最初のコントロールで午前 10 時、2 番目のコントロールで午後 1 時を選択した場合、3 時間の差が必要です。javascript でこれを行うにはどうすればよいですか。

var FirstTime = container.find('#1time').val();
var SecondTime = container.find('#2time').val();

alert(FirstTime); // 11 AM
alert(SecondTime);// 1 PM

var diff = (SecondTime - FirstTime); // Need value of 3 here..

タイム ピッカー コントロールをミリタリー タイム形式に設定し、それを解析して数値を取得し、差を得ることができます。しかし、それはオプションではありません。数値が AM と PM が付加された文字列として保存されていることは理解しています.これを行う良い方法はありますか?

4

3 に答える 3

2

次のようなことができます。

var time1;
var time2;
if (FirstTime.split(' ')[1] === "PM") {
    time1 = parseInt(FirstTime.split(' ')[0])+ 12;
}else{
    time1 = parseInt(FirstTime.split(' ')[0])
}

if (SecondTime.split(' ')[1] === "PM") {
    time2 = parseInt(SecondTime.split(' ')[0])+ 12
}else{
    time2 = parseInt(SecondTime.split(' ')[0])
}

diff = time2 - time1;
于 2012-08-29T02:51:16.810 に答える
2
function timeDiff( first, second ) {
    var f = first.split(' '), s = second.split(' ');

    if( first == '12 AM' ) f[0] = '0';
    if( first == '12 PM' ) f[1] = 'AM';
    if( second == '12 AM' ) s[0] = '24';
    if( second == '12 PM' ) s[1] = 'AM';

    f[0] = parseInt( f[0], 10 ) + (f[1] == 'PM' ? 12 : 0);
    s[0] = parseInt( s[0], 10 ) + (s[1] == 'PM' ? 12 : 0);

    return s[0] - f[0];
}

var FirstTime = container.find('#1time').val();
var SecondTime = container.find('#2time').val();

alert(FirstTime); // 11 AM
alert(SecondTime);// 1 PM

var diff = timeDiff( FirstTime, SecondTime );

デモ

于 2012-08-29T02:56:21.590 に答える
2

12 時間表記では、特定の日の開始時の午前 0 時とその終了時の午前 0 時を区別しないため、以下の関数は、最初の変数で使用されている場合はその日の開始12 AMを意味し、その日の終了を意味すると想定しています。 2 番目の変数で使用される日。ということです。'12 AM' - '12 AM' = 24

function timeDiff( first, second ) {
  function to24h(value) {
    value = value.split(' ');
    return (value[0] % 12) + (value[1]==='PM' ? 12:0);
  }
  return (to24h(second)||24) - to24h(first);
}
于 2012-08-29T03:44:39.233 に答える