在不同时区运行命令

时间:2020-05-27 06:47:50

标签: scala sbt

我想在不同时区运行单元测试用例和集成测试用例。

sbt测试(格林尼治标准时间) sbt it:test(在gmt中)

是否可以在gmt中运行它们?

2 个答案:

答案 0 :(得分:1)

我有点怀疑是否有一种通用,可靠的方式来做到这一点。

据我所知,推荐的方法是假设计算机(服务器)使用UTC时间,而您完全不依赖计算机所在的时区。您可以存储与用户某种程度上相关的时区设置,然后可以通过更改传递的设置来轻松地进行更改。 (java.timeLocalZoned单位之间进行区分是有原因的。

如果您想动态更改程序看到的时间,则可能必须使用libfaktime之类的东西来拦截对系统时钟的所有调用。您也许可以mix that with Docker来简化在不同时间运行一项测试,而在不同时间运行另一项测试的问题。

我想在很多情况下会有一些技巧可以避免所有这些事情……但是,如果我们所知道的是,您想在不同时区运行2个测试,而无需任何有关库,操作系统等的知识那么很难推荐更好的东西。

答案 1 :(得分:0)

$ date
2021-06-25T15:42:23 UTC

$ TZ=Europe/Chisinau date
2021-06-25T18:42:44 EEST

如果应用程序出于某种原因不遵守 TZ 变量,您也可以使用 bubblewrap (bwrap --bind / / --bind /usr/share/zoneinfo/Europe/Chisinau /etc/localtime)。