You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何模拟持续走时的datetime?

模拟持续走时的假时钟最简方案

Python 实现

核心逻辑很直白:记录两个关键时间点——你指定的起始假时间,以及假时钟启动瞬间的真实时间。每次需要获取当前假时间时,计算真实时间流逝的时长,把这个时长加到起始假时间上,就能得到持续推进的假时间。

import datetime

class FakeClock:
    def __init__(self, start_datetime_str):
        # 解析指定的起始假时间(格式:YYYY-MM-DD HH:MM)
        self.start_fake = datetime.datetime.strptime(start_datetime_str, "%Y-%m-%d %H:%M")
        # 记录假时钟启动时的真实时间
        self.start_real = datetime.datetime.now()
    
    def now(self):
        # 计算真实时间流逝的时长
        elapsed = datetime.datetime.now() - self.start_real
        # 返回推进后的假时间
        return self.start_fake + elapsed

# 用法示例
clock = FakeClock("2023-01-03 15:29")
# 第一次获取假时间
print(clock.now())
# 等待3秒后再获取,假时间会自动推进约3秒
import time
time.sleep(3)
print(clock.now())

这个方案不需要任何第三方依赖,完全复刻真实时钟的走时速度。如果需要调整走时速度(比如2倍速快进),只需要把elapsed乘以对应倍率即可,比如elapsed * 2。

JavaScript 实现

逻辑和Python一致,用Date对象处理时间差:

class FakeClock {
    constructor(startDatetimeStr) {
        // 解析起始假时间(格式需兼容Date,比如"2023-01-03T15:29:00")
        this.startFake = new Date(startDatetimeStr);
        // 记录启动时的真实时间戳(毫秒级)
        this.startReal = Date.now();
    }

    now() {
        // 计算真实时间流逝的毫秒数
        const elapsed = Date.now() - this.startReal;
        // 推进假时间并返回
        return new Date(this.startFake.getTime() + elapsed);
    }
}

// 用法示例
const clock = new FakeClock("2023-01-03T15:29:00");
console.log(clock.now());
// 3秒后再获取,假时间会推进3秒
setTimeout(() => {
    console.log(clock.now());
}, 3000);

内容的提问来源于stack exchange,提问作者scott_m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:30:43