有没有什么软件或硬件可以让你停止、减慢、加速甚至逆转时间?

有没有什么软件或硬件可以让你停止、减慢、加速甚至逆转时间?

显然,我指的是电脑时钟的时间,而不是真实的时间。

我们正在测试我们在工作中开发的一个应用程序,通过将时钟向前和向后设置来模拟不同的场景,我开始想如果你能以更精细的控制调整系统时钟的速率(?)那将是多么有用。这样你就可以在一秒钟内过去一分钟,或者在 30 秒内过去一天,然后观察你正在开发的程序如何应对日期和时间的变化。

有这样的软件可用吗?

我很想知道是否有人知道任何软件或硬件可以让您完成上述部分或全部操作。

答案1

它不一定会加快时间,但对于调试很有用。

Nirsoft 的运行日期

来自网站:

RunAsDate 是一款小型实用程序,可让您在指定的日期和时间运行程序。此实用程序不会更改计算机的当前系统日期和时间,但只会将您指定的日期/时间注入所需的应用程序。您可以同时运行多个应用程序,每个应用程序使用不同的日期和时间,而系统的实际日期/时间继续正常运行。

答案2

在 UNIX 系统上,libfaketime是个事实上软件中解决此问题的标准方法。它在应用程序和系统的时间库之间执行一种中间人操作。请求被传递到系统,但回复会根据需要进行修改。它还会修改stat()调用的结果,因此文件修改时间等也会被修改。

这些设置是通过环境变量进行的,因此如果您还不熟悉它们的工作原理,您可能需要了解这些设置。

libfaketime 支持相对和绝对偏移、停止和运行时间以及加速或减速。不过我不知道如何倒着跑。

请注意,当前版本将秒视为最高精度,并将响应的亚秒部分原封不动地传递给应用程序。因此,如果您将时钟速度减半,那么一个亚秒级感知程序在进行非常快速的时间调用时,将会经历两次整秒,而不是一次经历整秒,但时间却是原来的两倍。如果时钟停止,则意味着应用程序会在选定的秒内看到随机时间。

不幸的是,Github 今天瘫痪了,所以文档现在不可用,但这个问题可能很快就会修复。

编辑:

在 Github 的支持下我尝试了一下,发现速度变化的代码足够通用,可以很好地与负值或 接受的任何其他值配合使用atof()

然而,另一个问题变得明显:对于速度变化,除了实际当前时间和所需时间偏移之外,还需要一个时间原点。此原点是为子进程单独设置的,因此(当以正常速度向后运行时)当父进程已回退一分钟时,新生成的子进程将看到比父进程晚两分钟的当前时间。

答案3

您可以随时编写脚本。(CMD 是否仍然支持 DATE/TIME 命令?)

无论如何,您最终使用的任何程序都可能通过以小增量重置时间来工作。如果您不需要超细粒度的控制,批处理脚本(或 perl:)可以非常轻松地控制这些更改。

陷阱:要使用此解决方案,需要关闭 NTP 更新服务,这样操作系统就不会一直将时钟重置回应有的时间。

答案4

虚拟机可以加快,例如 VirtualBox:

VBoxManage setextradata "VM name" "VBoxInternal/TM/WarpDrivePercentage" 200

相关内容