我正在尝试运行Java程序,但它采用默认的GMT时区而不是OS定义的时区.我的JDK版本是1.5,操作系统是Windows Server Enterprise(2007)
Windows指定了一个中央时区,但是当我运行以下程序时,它会给我一个GMT时间.
import java.util.Calendar;
public class DateTest
{
public static void main(String[] args)
{
Calendar now = Calendar.getInstance();
System.out.println(now.getTimeZone());
System.out.println(now.getTime());
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出
sun.util.calendar.ZoneInfo[id="GMT",
offset=0,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
Mon Mar 22 13:46:45 GMT 2010
Run Code Online (Sandbox Code Playgroud)
请注意,我不想从应用程序设置时区.我希望JVM使用的时区应该是操作系统中指定的时区.(我没有发现其他具有1.4版JDK和Microsoft Server 2003的服务器的问题).
任何想法都将受到高度赞赏.
无论机器上设置的时区如何,我都需要强制任何与GMT/UTC相关的操作.在代码中有任何方便的方法吗?
为了澄清,我正在使用数据库服务器时间进行所有操作,但它是根据本地时区格式化的.
谢谢!
我正在尝试使用Spring Data JPA 1.8新的jdk日期转换器.
在我的Spring Boot应用程序中,我添加了一个配置类,如:
@Configuration
@ComponentScan(basePackageClasses = LocalContainerEntityManagerFactoryBean.class)
@EnableJpaAuditing
public class DataConfig {
}
Run Code Online (Sandbox Code Playgroud)
这是如何org.springframework.data.jpa.convert.threeten.Jsr310JpaConverters
应用自动转换的建议.我也使用像org.springframework.data.jpa.domain.support
和的直接包引用org.springframework.data.jpa.convert.threeten
.
问题是jdk 8日期转换不会发生导致sql异常.
但是,当我手动将转换器应用于我的域类时,如:
@Convert(converter = Jsr310JpaConverters.LocalDateConverter.class)
private LocalDate birthdate;
Run Code Online (Sandbox Code Playgroud)
然后转换确实有效.
我的系统时间与java的新Date()告诉(+ 4小时)不同,
所以我认为这是因为一些java设置.
如何让java时间始终作为我的linux系统时间?
(通过编辑一些配置文件)