簡體   English   中英

無法使用JavaScript計算時差

[英]Could not calculate the time difference using JavaScript

我需要使用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)Date.parse方法將日期從1970年1月1日開始轉換為毫秒。請參見https://www.w3schools.com/Jsref/jsref_parse.asp ,因此將用戶輸入日期從1970年1月1日開始轉換為毫秒。

2)在Javascript中,新Date()對象上的getTime()方法獲取自1970年1月1日到當前時間為止經過的毫秒數。

3)因此,找到這些毫秒之間的差將獲得毫秒之間的差。

4)由於1小時= 3600000 ms,因此要找到小時差,請用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM