kbl*_*uck 5 linux time timezone
是否可以在任何 Linux 上强制设置超出“有效”范围 -12 到 +14 的时区偏移量?
我正在寻找一种方法来临时模拟可能是未来几天的“本地时间”(用于测试目的),如果可能的话,而不实际更改系统时钟。
小智 5
可以使用任何不存在的时区名称并将时间设置为 +- 24 小时。假设MYFAKETIME不存在作为有效时区(目前还没有,但可能在将来定义(非常不可能)),那么,这是可能的:
isaac@mail:~$ date
Sun Sep 30 01:22:05 EST 2018
isaac@mail:~$ TZ=MYFAKETIME date
Sun Sep 30 06:22:43 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+1 date
Sun Sep 30 05:22:56 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+10 date
Sat Sep 29 20:23:00 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+20 date
Sat Sep 29 10:23:05 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+24 date
Sat Sep 29 06:23:08 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+48 date
Sat Sep 29 06:23:14 MYFAKETIME 2018
isaac@mail:~$ TZ=MYFAKETIME+96 date
Sat Sep 29 06:23:25 MYFAKETIME 2018
isaac@mail:~$
Run Code Online (Sandbox Code Playgroud)
请注意,高于 24 的时区不起作用。它们不改变时间,但限制在 的范围-24内+24。从21.4.7 用 TZ 指定时区
当当地时区没有夏令时(或夏令时)时,使用第一种格式:
Run Code Online (Sandbox Code Playgroud)std offsetstd 字符串指定时区的名称。它的长度必须为三个或更多字符,并且不得包含前导冒号、嵌入数字、逗号、加号和减号。时区名称与偏移量之间没有空格字符分隔,因此这些限制对于正确解析规范是必要的。
偏移量指定必须添加到本地时间才能获得协调世界时值的时间值。它的语法类似于 [+|-]hh[:mm[:ss]]。如果当地时区位于本初子午线以西,则该值为正;如果本地时区位于本初子午线以东,则该值为负。小时必须介于 0 到 24 之间,分钟和秒必须介于 0 到 59 之间。
因此,无法使用 TZ 变量将时间更改为“未来的几天”。
真正的解决方案是使用该faketime实用程序(来自同名包)。
这将允许您执行以下操作:
isaac@mail:~$ faketime '2008-12-24 08:15:42' /bin/date
Wed Dec 24 08:15:42 EST 2008
isaac@mail:~$ date
Sun Sep 30 01:44:29 EST 2018
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3428 次 |
| 最近记录: |