Как принудительно установить JVM Spring Boot в часовой пояс UTC? - PullRequest
0 голосов
/ 23 января 2019

Я видел Принудительный часовой пояс Java как GMT / UTC

Я пытался

  • mvn spring-boot: run -Dexec.args = "- Duser.часовой пояс = GMT "
  • mvn весенняя загрузка: run -Dexec.args =" - Duser.timezone = UTC "
  • user.timezone=UTC в config/application.properties
  • user.timezone=GMT
  • В pom.xml:

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <properties>
                  <spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments>
                </properties>
            </configuration>
        </plugin>
    
  • mvn spring-boot: run -Dspring-boot.run.jvmArguments = "- Duser.timezone = UTC"

Но он печатает

System.out.println(TimeZone.getDefault());

sun.util.calendar.ZoneInfo [id =" Америка / New_York ", смещение = -18000000, dstSavings = 3600000, useDaylight = верно, переходы = 235, lastRule = java.util.SimpleTimeZone [ID = Америка / New_York, смещение = -18000000, dstSavings = 3600000, useDaylight = верно, StartYear = 0, StartMode = 3, StartMonth = 2, startDay =8, startDayOfWeek = 1, startTime = 7200000, startTimeMode = 0, endMode = 3, endMonth = 10, endDay = 1, endDayOfWeek = 1, endTime = 7200000, endTimeMode = 0]]

Spring Boot1.5.19, Java 8

Ответы [ 4 ]

0 голосов
/ 23 января 2019

Я думаю, вы можете установить часовой пояс вашего приложения на уровне приложения.Я думаю, что эта ссылка поможет вам.https://www.onlinetutorialspoint.com/spring-boot/how-to-set-spring-boot-settimezone.html

Итак, вам нужно добавить аннотацию "@PostConstruct" в основной класс, где расположена аннотация "@SpringBootApplication", и добавить туда метод установки часового пояса.Вот пример.

@SpringBootApplication
public class HellotimezoneApplication {

    public static void main(String[] args) {
        SpringApplication.run(HellotimezoneApplication.class, args);
    }

    @PostConstruct
    public void init(){
      // Setting Spring Boot SetTimeZone
      TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    }

}

Надеюсь, это поможет вам!

0 голосов
/ 23 января 2019

Ну, исходя из вашего вопроса у вас есть два варианта:

  1. В настройке pom.xml в строке аргумента user.timezone, прежде чем surefire устанавливает свойства в systemPropertyVariables:

    <plugin>
     ...
      <configuration>
        <argLine>-Duser.timezone=UTC</argLine>
      </configuration>
      ... 
    </plugin>
    
  2. Создание метода init в вашем классе Application или некотором классе Configuration и в методе setDefault Time Zone to UTC:

    @PostConstruct
    public void init() {
       TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
       // OR you can use the line below
       // System.setProperty("user.timezone", "UTC")
    }
    
0 голосов
/ 23 января 2019

Вы можете настроить часовой пояс с классом, аннотированным аннотацией @Configuration.Вы можете поместить его в любом месте вашего проекта.Обычно я помещаю все классы, которые подпадают под эту категорию, в пакет под названием config.Обязательно добавьте аннотацию @PostConstruct к методу, который фактически устанавливает часовой пояс.

import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;

@Configuration
public class LocaleConfig {

    @PostConstruct
    public void init() {

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

        System.out.println("Date in UTC: " + new Date().toString());
    }
}

См. оригинальную статью

0 голосов
/ 23 января 2019

Используйте spring-boot.run.jvmArguments свойство , если вы хотите передать параметры JVM из плагина Maven Spring Boot в разветвленное приложение Spring Boot:

<properties>
  <spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments>
</properties>

Это эквивалентно синтаксису командной строки:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Duser.timezone=UTC"

или при запуске полностью упакованного приложения Spring Boot:

java -Duser.timezone=UTC -jar app.jar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...