簡體   English   中英

使用javascript保存為字符串的兩次之間的差異

[英]Difference between two times that are saved as strings using javascript

我有兩個時間選擇器jquery控件有時間格式為“上午10點”,“上午11點”,“下午12點”等。我如何得到這兩個時間選擇之間的差異。

例如,如果我在第一個控件中選擇10 AM,在第二個控件中選擇1 PM,我需要以小時為單位的差異為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的字符串..有沒有一種好方法可以做到這一點?

你可以這樣做:

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

演示

由於12小時時鍾表示法不午夜之間在特定一天的開始和在其末端的午夜區分,函數下面假定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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM