我有一个计算器可以计算两个日期时间值之间的小时差异。我希望当选定的月份结束和新的月份开始时,计算从头开始。现在二月一切正常,但是当有人想从三月开始计算时,它会计算 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€");
}
给定:
var valuestart = $("#frompicker").val();
什么是价值起点?字符串还是时间值?如果是字符串,则在某些浏览器中可能无法按预期工作:
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 同月的第一天。但我可能误解了这个问题。