Не удалось рассчитать разницу во времени с помощью JavaScript - PullRequest
0 голосов
/ 30 марта 2019

Мне нужно рассчитать разницу во времени в часах между текущей датой и пользовательским вводом даты и времени, используя JavaScript.Вот мой код:

var user_date = '31-03-2019';
        var dep_time='12:30PM';
        var datePieces = user_date.split("-");
        var mydate=[datePieces[1] , datePieces[0] , datePieces[2]].join("-");
        var todayDate = new Date();
        var todayMonth = todayDate.getMonth() + 1;
        var todayDay = todayDate.getDate();
        var todayYear = todayDate.getFullYear();
        if (todayDay < 10) {
          todayDay = '0' + todayDay;
        }
        if (todayMonth < 10) {
          todayMonth = '0' + todayMonth;
        }
        var todayDateText = todayMonth + "-" + todayDay + "-" + todayYear;
        var inputToDate = Date.parse(mydate);
        var todayToDate = Date.parse(todayDateText);
        //console.log(inputToDate, todayToDate);
        //console.log(user_date, todayDateText);
        if (inputToDate > todayToDate) {
            var date=new Date;
            var hours = date.getHours();
            var minutes = date.getMinutes();
            var ampm = hours >= 12 ? 'pm' : 'am';
            hours = hours % 12;
            hours = hours ? hours : 12; // the hour '0' should be '12'
            minutes = minutes < 10 ? '0'+minutes : minutes;
            var strTime = hours + ':' + minutes + ' ' + ampm;
            var timeStart = new Date(todayToDate + strTime);
            var timeEnd = new Date(mydate + dep_time);
            console.log(timeStart);
            console.log(timeEnd);
            var diff = (timeEnd - timeStart) / 60000; //dividing by seconds and milliseconds
            var minutes = diff % 60;
            var hours = (diff - minutes) / 60;
            alert(hours);
        } else {

        }

Здесь я получаю вывод NAN.У меня есть и пользовательский ввод, и текущая дата, и мне нужна разница во времени в HRS.

1 Ответ

1 голос
/ 30 марта 2019

1) Метод Date.parse преобразует дату в миллисекунды с 1 января 1970 года. См. https://www.w3schools.com/Jsref/jsref_parse.asp,, поэтому преобразование даты пользовательского ввода в миллисекунды с 1 января 1970 года.

2)В Javascript метод getTime () для нового объекта Date () получает количество миллисекунд, прошедших с 1 января 1970 года до текущего времени.

3) Поэтому, обнаружение разницы в этих миллисекундах дает вам разницу в миллисекундах.

4) Поскольку 1 час = 3600000 мс, чтобы найти разницу в часах, разделите ваш ответ на 3600000и получите разницу в часах.

  • Вы также, кажется, забыли включить dep_time при разборе вашей даты.

И решение ниже:

<script>
"use strict";
var user_date = '31-03-2019 12:30 PM';
        var datePieces = user_date.split("-");
        var mydate=[datePieces[1] , datePieces[0] , datePieces[2]].join("-");

        var todayDate = new Date();
        var todayToDate = todayDate.getTime();
        // In JavaScript, getTime() gets the number of milliseconds that have passed since January 1, 1970.

        var inputToDate = Date.parse(mydate);

        if (inputToDate > todayToDate) {
            var diff = (inputToDate - todayToDate) / 3600000; //Since 1 h = 3600000 ms
            alert(diff);
        } else {
            var diff = (todayToDate - inputToDate) / 3600000; //Since 1 h = 3600000 ms
            alert(diff);
        }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...