Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
始终在UTC中运行Java应用程序_Java - Fatal编程技术网

始终在UTC中运行Java应用程序

始终在UTC中运行Java应用程序,java,Java,以下两种方法是否完全等效,以确保Java应用程序以UTC运行 使用“user.timezone”参数启动JVM: java -jar MyJar.jar -Duser.timezone=UTC 从main()方法执行以下方法(Java 8) 我想让应用程序在UTC中运行成为非可选的,因此JVM参数方法是不可取的。没有迹象表明这两种方法是不等效的。 唯一的区别是变量1在进入main()之前设置默认时区 因此,在调用setUtcTimezone()之后,这两个变体是等效的,而在调用之前则不是。

以下两种方法是否完全等效,以确保Java应用程序以UTC运行

  • 使用“user.timezone”参数启动JVM:

    java -jar MyJar.jar -Duser.timezone=UTC
    
  • 从main()方法执行以下方法(Java 8)


  • 我想让应用程序在UTC中运行成为非可选的,因此JVM参数方法是不可取的。

    没有迹象表明这两种方法是不等效的。 唯一的区别是变量1在进入main()之前设置默认时区

    因此,在调用
    setUtcTimezone()
    之后,这两个变体是等效的,而在调用之前则不是。 因此,您可以有一个静态初始值设定项,它在调用main之前使用时区

    但这是你的责任

    使用变体2没有任何陷阱,使用它,它会起作用。

    我使用的方法稍微短一点

     TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    
    这两种变体中唯一的弱点是相信没有其他代码 更改默认时区。 因此,对于在日期格式化中使用UTC的特定方法,最好使用DateFormatter(不是静态的,可以是实例或使用Thread.Local()),并显式地将时区UTC设置为该格式化程序。 然后将其保存为输出或以UTC计算

     TimeZone.setDefault(TimeZone.getTimeZone("UTC"));