希望这对您有所帮助,或者至少是您可以从哪里开始的.
看起来最好的方法是使用OffsetDateTime类型来存储日期.将来自用户的dateTime值转换为UTC很容易:
OffsetDateTime createdOn = requestDto.getCreatedOn();
OffsetDateTime utc = createdOn.atZoneSameInstant(ZoneId.of("UTC"));
然后再回来(当然你也需要存储用户时区):
OffestDateTime eventDate = modelObject.getEventDate();
OffsetDateTime userTime = eventDate.atZoneSameInstant(ZoneId.of(userTimeZone));
要在UTC中实例化新的日期对象,您可以使用clock-object:
OffestDateTime now = OffestDateTime.now(Clock.systemUTC());
ModelObject dto = new ModelObject();
dto.setEventDate(now);
最后如果您不需要显示偏移量,您可以使用LocalDateTime类型:
OffestDateTime eventDate = databaseModelObject.getEventDate();
LocalDateTime userTime = eventDate.atZoneSameInstant(ZoneId.of(userTimeZone)).toLocalDateTime());
ResponseDto response = new ResponseDto();
response.setEventDate(userTime);