想用python写一个实时计时程序(或用html写),怎么实现?

如果一运行这段代码就会打印出时实变化的时间
比如:已运行0天0小时0分钟15秒
每过一秒会自动刷新打印结果。

阅读 5.1k
4 个回答

print函数结尾默认是换行,改成\r代表回车print('xxx', end='\r')

import time


def second_to_time(seconds):
    minute, second = divmod(seconds, 60)
    hour, minute = divmod(minute, 60)
    day, hour = divmod(hour, 24)
    return day, hour, minute, second


def str_time(s):
    return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(s))


def main():
    ts = time.time()
    print('程序开始时间: ', str_time(ts))
    try:
        while True:
            time.sleep(1)
            tn = time.time()
            total_second = int(tn - ts)
            day, hour, minute, second = second_to_time(total_second)
            current_time = str_time(tn)
            echo_info = '当前时间: {t}, 已运行{day}天{hour}小时{minute}分钟{second}秒'\
                .format(
                    t=current_time,
                    day=day,
                    hour=hour,
                    minute=minute,
                    second=second
                )

            print(echo_info, end='\r')
    except KeyboardInterrupt:
        current_time = str_time(time.time())
        print('\n程序结束时间: {}'.format(current_time))

if __name__ == '__main__':
    main()

你要的html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>hello world</title>
</head>

<body>
    <div id="time"></div>
    <input type="button" id="start" value="开始">
    <input type="button" id="stop" value="暂停">
    <input type="button" id="reset" value="重置">

    <script>
        var timer = (function () {
            var start, temp;

            function run() {
                start = start || +new Date();
                if (temp) {
                    start += (new Date() - temp);
                    temp = 0;
                }
            }

            function stop() {
                if (start && !temp) {
                    temp = +new Date();
                }
            }

            function reset() {
                start = 0;
                temp = 0;
            }

            function getTime() {
                return start ? (temp ? temp : new Date()) - start : 0;
            }

            function getText() {
                var now = getTime() / 1000 >> 0;
                var h, m, s;
                s = now % 60;
                now = now / 60 >> 0;
                m = now % 60;
                now = now / 60 >> 0;
                h = now % 24;
                now = now / 24 >> 0;
                return now + ' 天 ' + h + ' 时 ' + m + ' 分 ' + s + ' 秒 ';
            }

            return {
                start: run,
                stop: stop,
                reset: reset,
                getTime: getTime,
                getText: getText
            }
        })();

        function getId(id) {
            return document.getElementById(id);
        }

        getId('start').onclick = timer.start;
        getId('stop').onclick = timer.stop;
        getId('reset').onclick = timer.reset;

        setInterval(function () {
            getId('time').innerText = timer.getText();
        }, 100);
    </script>
</body>

</html>
  1. print()如何不换行在同一行刷新显示
  2. 获取当前系统时间(通过当前系统时间减去程序进入时的时间来计算已运行时间会比较准确,前提是期间你不要修改系统时间)
  3. 时间的格式化问题

console的写法。

import sys
from datetime import datetime
from time import sleep

start_time = datetime.now()

while True:
    sleep(1)
    delta = datetime.now() - start_time
    message = 'Program running time: {}'.format(str(delta).split('.')[0])
    sys.stdout.write('\r' + message)
    sys.stdout.flush()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题