3

我有两个时间选择器 jquery 控件,它们的时间格式为“上午 10 点”、“上午 11 点”、“下午 12 点”等。如何区分这两个时间选择。

例如,如果我在第一个控件中选择上午 10 点,在第二个控件中选择下午 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

由于 12h 时钟符号不区分特定一天开始时的午夜和结束时的午夜,因此如果在第一个变量中使用它,下面的函数假定这12 AM意味着一天的开始,以及结束时如果在第二个变量中使用日期这意味着'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 回答