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
相关产品推荐
相关产品推荐

