在日期时间选择器中检查月份是否过去



我有一个计算器可以计算两个日期时间值之间的小时差异。我希望当选定的月份结束和新的月份开始时,计算从头开始。现在二月一切正常,但是当有人想从三月开始计算时,它会计算 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 同月的第一天。但我可能误解了这个问题。

最新更新