sql >> Databasteknik >  >> RDS >> Mysql

Förfluten tid från en given tid i databasen

Detta kan uppnås med väldigt lite Javascript.

Förutsatt att den "skapade" tiden renderas dynamiskt i tabellen med formatet dd MMM yyyy hh:mm:ss , något sånt här borde göra susen:

<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>

Kopiera koden ovan till en fil, säg index.html , och öppna den i en webbläsare. Jag testade det i Chrome.

Den ska uppdatera den förflutna tiden var 2:e sekund, men du kan ändra uppdateringsintervallet till något som passar dig, t.ex. för att få den att uppdatera var 5:e minut:

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

Det allmänna konceptet är att analysera det renderade "Skapade" datumet till en epoktidsstämpel (i millisekunder) och sedan beräkna dess skillnad med den aktuella systemtiden. För att få den förflutna tiden att uppdatera dynamiskt använder du Javascripts setInterval fungera. För att sluta uppdatera den förflutna tiden använd Javascripts clearTimeout funktion.

Jag lyfte prettyPrintTime funktion från powtac .



  1. Hur förklarar jag en fråga med parametrar i MySQL

  2. Varför får jag den här SQLSyntaxErrorException:ORA-00933:SQL-kommandot avslutades inte korrekt när jag försöker utföra den här JDBC-frågan?

  3. PostgreSQL - hur renderar man datum i olika tidszoner?

  4. Hur kodifierar och lagrar man dynamiska behörighetsbegränsningar?