2017-05-20 59 views
-1

我想得到两次之间的差异。第一个是我使用javascript日期对象的当前时间对象new Date() 而第二个是像“20:30”这样的字符串。 因此,假设,如果目前的时间是18:00,然后我只是想这样的“2小时30分钟离开了差异。 感谢任何类型的帮助。如何获得两次差异?

+0

我想你可以在这里阅读问题。 [date-diff-javascript](http://stackoverflow.com/questions/34386175/date-diff-javascript) – dawnfly

+2

[检查Javascript中的时间差异]的可能重复(http://stackoverflow.com/questions/1787939/check-time-in-javascript) – mehulmpt

回答

0

最简单的就是使用该库moment.js它能够处理时间/ 。日期操纵以及

+0

有没有什么办法可以做到这一点使用可用的JavaScript日期函数? –

+0

@SKJajoriya是的,你可以用'Date'来解析日期,如果你想要看这个主题,例如: http://stackoverflow.com/questions/5619202/converting-string-to-date-in-js 而只是比较两个日期,并获得差异。 – rymdmaskin

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

您可以使用Date.Parse()函数的字符串,如Date.parse("1970 1 1 20:30")得到一个javascript日期时间,然后按照有关如何获取的时间差betwe this post两个JavaScript日期对象。

希望这会有所帮助!

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

下面是你可以只使用香草的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"; 

我们是“正常化”秒和毫秒将它们设置为0,否则他们会不管他们是当new Date()被调用。

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>