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