sql >> Database >  >> RDS >> Mysql

Verstreken tijd vanaf een bepaalde tijd in de database

Dit kan worden bereikt met heel weinig Javascript.

Ervan uitgaande dat de "Gecreëerde" tijd dynamisch wordt weergegeven in de tabel met het formaat dd MMM yyyy hh:mm:ss , zou zoiets als dit moeten werken:

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    ElapsedTimeLogger = function(dateElementId, elapsedElementId, interval) {
        var container = $(elapsedElementId);
        var time = parseDate($(dateElementId).text());
        var interval = interval;
        var timer;

        function parseDate(dateString) {
            var date = new Date(dateString);
            return date.getTime();
        }

        function update() {
            var systemTime = new Date().getTime();
            elapsedTime = systemTime - time;
            container.html(prettyPrintTime(Math.floor(elapsedTime / 1000)));
        }

        function prettyPrintTime(numSeconds) {
            var hours = Math.floor(numSeconds / 3600);
            var minutes = Math.floor((numSeconds - (hours * 3600)) / 60);
            var seconds = numSeconds - (hours * 3600) - (minutes * 60);

            if (hours < 10) hours = "0" + hours;
            if (minutes < 10) minutes = "0" + minutes;
            if (seconds < 10) seconds = "0" + seconds;
            var time = hours + ":" + minutes + ":" + seconds;

            return time;
        }

        this.start = function() {
            timer = setInterval(function() {update()}, interval * 1000);
        }

        this.stop = function() {
            clearTimeout(timer);
        }
    }
    $(document).ready(function () {
        var timeLogger = new ElapsedTimeLogger("#date", "#elapsed", 2);
        timeLogger.start();

        $("#stop_timer").click(function() {
            timeLogger.stop();
        });
        $("#start_timer").click(function() {
            timeLogger.start();
        });
    });
    </script>
</head>
<body>
    <table border="1">
        <tr><th>Created</th><th>Timer</th></tr>
        <tr><td id="date">21 Feb 2013 12:30:00</td><td id="elapsed"></td></tr>
    </table>
    <input id="stop_timer" type="button" value="Stop timer"></input>
    <input id="start_timer" type="button" value="Start timer"></input>
</body>
</html>

Kopieer de bovenstaande code naar een bestand, bijvoorbeeld index.html en open het in een browser. Ik heb het getest in Chrome.

Het moet de verstreken tijd elke 2 seconden bijwerken, maar u kunt het update-interval wijzigen in iets dat bij u past, b.v. om het elke 5 minuten te laten updaten:

new ElapsedTimeLogger("#date", "#elapsed", 300);

Het algemene concept is om de weergegeven "Created"-datum te ontleden in een tijdstempel van een tijdperk (in milliseconden) en vervolgens het verschil met de huidige systeemtijd te berekenen. Om de verstreken tijd dynamisch bij te werken, gebruikt u Javascript's setInterval functie. Gebruik Javascript's clearTimeout . om te stoppen met het bijwerken van de verstreken tijd functie.

Ik heb de prettyPrintTime functie van powtac .



  1. Opgeslagen procedure en machtigingen - Is UITVOEREN voldoende?

  2. while-lus en join-uitvoer in mysql php

  3. Tel dagen tussen twee datums, met uitzondering van weekends (alleen MySQL)

  4. MySQL Group By-functionaliteit in verschillende versies