java - 部署的应用程序在 AWS 服务器上选择通用时间而不是本地时间
问题描述
目前,我的 AWS 实例显示低于时间
timedatectl status
**Local time:** Thu 2019-12-26 19:41:51 IST
Universal time: Thu 2019-12-26 14:11:51 UTC
RTC time: Thu 2019-12-26 14:11:51
Time zone: Asia/Kolkata (IST, +0530)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
波乔
@Entity
@Table(name = "hotel_booking")
public class Booking implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Long id;
@Id
private Integer version;
@NotNull
@Column(name = "ota_reference_no", nullable = false)
private String referenceNo;
@Column(name = "guest_name")
private String guestName;
@Column(name = "created_date", columnDefinition = "timestamp", nullable = false)
private LocalDateTime createdDate;
@Column(name = "modified_date", columnDefinition = "timestamp")
private LocalDateTime modifiedDate;
======
一旦坚持 createdDate 提交选择 Universal time 但需要的是Local time。
在 localhost 中获得相同的预期结果:
数据库使用:Postgres(即本地安装在AWS实例上)
解决方案
如果这是(或将成为)一个真正的应用程序,请帮自己一个忙,并始终将时间轴(或实际时刻)上的任何实际点保留在其中UTC
——您实际上可以使用该Instant
类型在您的应用程序中直接获得这一点。下线,您可以使用ZonedDateTime
(或LocalDateTime
,但这个很棘手)在将值暴露给用户代理之前相应地“翻译”这些值 - 或者对于您可能正在执行的任何其他操作,这可能是时区敏感的.
顺便说一句,你得到的原因
Universal time
而不是Local time
它是因为 Java 虚拟机、应用程序、你用于持久性(或组合)的框架是以这种方式设置的,或者默认情况下,或者因为某处在应用程序中有这样的设置:-Duser.timezone=UTC
. 如果是应用程序,它可能是ZoneOffset.UTC
orTimeZone.setDefault(...)
,但这些不太可能,因为您需要以编程方式执行此操作。执行 aSystem.out.println(ZoneId.systemDefault())
,它应该产生UTC
(或这些行附近的东西)。
推荐阅读
- linux - 模拟 Gamepad 按钮在没有 uinput 的情况下按下 linux
- nginx - 来自 Netlify 的 SSL 证书 - 带有 Digital Ocean 的 HTTPS
- ruby - Ruby - 无法加载此类文件 - curl - Windows 10
- php - 为什么谷歌日历权限在同意屏幕中是可选的
- java - 使用 Gradle 与云的 SpringBoot 配置文件
- entity-framework - 当我尝试添加迁移时,出现错误
- api - IEXCloud“变化百分比”统计没有意义
- javascript - 如何在 Firestore Web V9 的子集合中获取新创建文档的自动生成 ID?Javascript/反应
- elasticsearch - Elasticsearch:聚合“文本”类型值数组的方式是什么?
- java - EasyRules 问题:Method rulesEngine.registerRuleListener is undefined 编译器错误