【问题标题】:Run commands in different timezone在不同时区运行命令
【发布时间】:2020-09-14 03:13:04
【问题描述】:

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

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

有没有办法在 gmt 中运行它们?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    我有点怀疑是否存在一种通用、可靠的方法。

    据我所知,推荐的方法是假设计算机(服务器)使用 UTC 时间,而您根本不依赖计算机所在的时区。您可以存储与用户相关的时区设置,然后您可以通过更改传递的设置来轻松更改。 (java.time 区分 LocalZoned 单位是有原因的)。

    如果您想动态更改程序看到的时间,那么您可能必须使用类似libfaktime 的东西来拦截对系统时钟的所有调用。您可能可以mix that with Docker 更轻松地在不同时间运行一个测试,在不同时间运行另一个测试。

    我想在很多情况下会有一些技巧可以让你避免所有这些......但如果我们只知道你想在不同的时区运行 2 次测试而不需要任何关于库、操作系统等的知识那么就很难推荐更好的了。

    【讨论】:

      【解决方案2】:
      $ 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)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-03
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 2021-04-06
        • 2023-04-03
        相关资源
        最近更新 更多