我有一个计算器来计算两个日期时间值之间的小时数。 我希望在选定月份结束时和新月开始计算从头开始。 现在一切都可以用于2月,但是当有人想要从3月开始计算时,它计算28天而不是31天 我的代码:
<script>
$(function () {
$('#frompicker').datetimepicker({ dateFormat: 'd/M/yy' });
$('#topicker').datetimepicker({ dateFormat: 'd/M/yy' });
});
<script>
$(document).ready(function () {
function calculateTime() {
//get values
var valuestart = $("#frompicker").val();
var valuestop = $("#topicker").val();
//alert(valuestart);
var timeStart = new Date(valuestart);
var timeEnd = new Date(valuestop);
var hourDiff = (timeEnd - timeStart) / 3600000;
if (hourDiff < 0) {
$("p").html("<b>price:</b> " + "wrong data" );
else if (hourDiff > 24&& hourDiff <= 672) { //28days
$("p").html("<b>price:</b> " + "100.00" + "€");
}
else if (hourDiff >= 672) { //
var hourDiffnew = hourDiff - 672;
var finalpricep61 = (hourDiffnew * 0.125) + 90;
var finalpricep62 = finalpricep61.toFixed();
$("p").html("<b>price:</b> " + finalpricep62 + ".00€");
}
答案 0 :(得分:0)
假设:
var valuestart = $("#frompicker").val();
什么是 valuestart ?字符串或时间价值?如果它是一个字符串,那么在某些浏览器中,以下内容可能无法正常工作:
var timeStart = new Date(valuestart);
var timeEnd = new Date(valuestop);
假设这些Date对象具有适当的值,并且:
当选定月份结束并且新月开始时,计算从头开始
表示从月初开始,然后:
if (timeStart.getMonth() != timeEnd.getMonth()) {
timeStart.setDate(1);
timeStart.setMonth(timeEnd.getMonth());
}
将 timeStart 设置为与 timeEnd 同月的第一个月。但我可能误解了这个问题。