unix - 更改 UNIX 进程的系统时间?

标签 unix datetime time process timezone

我需要测试我的 C++ 程序,它使用系统时间。
该程序很大,它使用第三方库,这些库也可能使用系统时间。

我想看看我的程序在不同日期/时间的表现如何。

是否可以只为 UNIX 中的一个正在运行的进程更改系统时间?

非常感谢...

最佳答案

嗯,我自己找到了答案。

在 unix shell 中有一个环境变量 TZ,它是时区,所有 C/C++ 时间函数都使用它。

可以操纵此变量将当前 unix shell 中的时间设置为任意时间(限制为秒数,而不是毫秒),甚至更改日期。

例子:

export TZ=A-02:10:20

(将时间从现在向前移动 2 小时 10 分 20 秒)。
export TZ=A+02:10:20

(同样向后移动)

如果要更改日期,可以使用大量小时数,例如:
export TZ=A-72:10:20

不幸的是,它不会让您更改太多日期,从我的实验来看,它最多可以向后/向前几天。因此,对于更改月/年,这不起作用。

(在设置 TZ 变量后使用 'date' 命令检查当前日期/时间)。

要取消所有更改,请使用
export TZ=

关于unix - 更改 UNIX 进程的系统时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601316/

相关文章:

jquery,css在长时间执行函数之前不会改变

mysql - 在日期时间mysql中转换一年中的 float 日期

c - 从文件中读取一行并将其存储在变量中

c - 前景信号 tcsetpgrp c

linux - 将 GMT 时间转换为 Epoch 脚本

java - 如何减去两个 joda 日期时间?

php - 从 PHP 向 MySql 插入日期和时间值

html - 调整大小时我的网页乱七八糟

git clone "fatal: I don' t handle protocol 'ssh' "

python - Django:将 View 中的日期时间设置为 utc+1