如何在两次之间获得差异?

时间:2017-05-20 13:25:36

标签: javascript jquery

我希望两次得到区别。第一个是我使用javascript日期对象new Date()获取的当前时间对象 第二个字符串就像" 20:30"。 因此,假设当前时间是18:00,那么我只想要那样的差异,而且还需要2小时30分钟。 感谢您提供任何帮助。

6 个答案:

答案 0 :(得分:1)

$(document).ready(function() {
  function calculateTime() {

    var valuestop = $("select[name='timestop']").val();

    var timeStart = new Date().getTime();//current time
    var timeEnd = new Date(new Date().toJSON().slice(0, 10).replace(/-/g, '/') + ' ' + valuestop).getTime();//selected time
    console.log(timeStart + ' ' + timeEnd);
    var hourDiff = timeEnd - timeStart; //in ms
    var secDiff = hourDiff / 1000; //in s
    var minDiff = hourDiff / 60 / 1000; //in minutes
    var hDiff = hourDiff / 3600 / 1000; //in hours
    var humanReadable = {};
    humanReadable.hours = Math.floor(hDiff);
    humanReadable.minutes = Math.round(minDiff - 60 * humanReadable.hours);
    console.log(humanReadable); //{hours: 0, minutes: 30}
    $("p").html("Difference: <b>Hours: </b>" + humanReadable.hours + "<b>Minutes: </b>" + humanReadable.minutes);
  }
  $("select").change(calculateTime);
  calculateTime();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select name="timestop">
    <option value="00:00:00">12:00 am</option>
    <option value="01:00:00">1:00 am</option>
    <option value="02:00:00">2:00 am</option>
    <option value="03:00:00">3:00 am</option>
    <option value="04:00:00">4:00 am</option>
    <option value="05:00:00">5:00 am</option>
    <option value="06:00:00">6:00 am</option>
    <option value="07:00:00">7:00 am</option>
    <option value="08:00:00">8:00 am</option>
    <option value="09:00:00">9:00 am</option>
    <option value="10:00:00">10:00 am</option>
    <option value="11:00:00">11:00 am</option>
    <option value="12:00:00">12:00 pm</option>
    <option value="13:00:00">1:00 pm</option>
    <option value="14:00:00">2:00 pm</option>
    <option value="15:00:00">3:00 pm</option>
    <option value="16:00:00">4:00 pm</option>
    <option value="17:00:00">5:00 pm</option>
    <option value="18:00:00">6:00 pm</option>
    <option value="19:00:00">7:00 pm</option>
    <option value="20:00:00">8:00 pm</option>
    <option value="21:00:00">9:00 pm</option>
    <option value="22:00:00">10:00 pm</option>
    <option value="23:00:00">11:00 pm</option>
    </select>

<p> </p>

答案 1 :(得分:0)

最简单的方法是使用可以很好地处理时间/日期操作的库moment.js

答案 2 :(得分:0)

尝试如下:

var date1 = new Date(2000, 0, 1, 20, 30);
var date2 = new Date(2000, 0, 1, 18, 0);

var diff = date1-date2;//milli seconds


var min = diff / 1000 / 60;
var r = min % 1;
var h=min/60;
var sec = Math.floor(r * 60);
if (sec < 10) {
    sec = '0'+sec;
}
    alert(min+'-'+ sec);

答案 3 :(得分:0)

您可以将Date.Parse()函数与Date.parse("1970 1 1 20:30")等字符串一起使用以获取javascript日期时间,然后按照this post了解如何获取两个javascript日期对象之间的时差。

希望这有帮助!

答案 4 :(得分:0)

利用Date对象中可用的函数。

var origTime = '20:30'.split(':');
var dateA = new Date();
dateA.setHours(origTime[0]);
dateA.setMinutes(origTime[1]);
var dateB = new Date();
var hourDiff = Math.abs(dateA - dateB)/36e5;

答案 5 :(得分:0)

以下是使用vanilla Js的方法:

var compareDate = new Date();
var timeParts = "20:30".split(":");
compareDate.setHours(Number(timeParts[0]));
compareDate.setMinutes(Number(timeParts[0]));
compareDate.setSeconds(0);
compareDate.setMilliseconds(0);

var diff = compareDate - new Date();
var diffInMinutes = Math.floor(diff / 1000 / 60);
var hours = Math.floor(diffInMinutes / 60);
var minutes = diffInMinutes % 60;

hours + " hours and " + minutes + " minutes left";

我们正常化&#34;正常化&#34;通过将它们设置为0来确定秒和毫秒,否则它们将成为调用new Date()时的任何内容。