将java.util.date转换为请求的不同时区



根据请求URL,我必须将日期转换为不同请求的时区,并将日期和时间返回为字符串。我正在使用Java 8和Spring Boot和Mongo 3.2

因此,在服务方法中,我首先将时区设置为下面的时区,

TimeZone.setDefault(TimeZone.getTimeZone(TIME_ZONE))

但我注意到,它将更改整个Java应用程序的时区。因此,即使是方法退出,时区也将是我以前设置的时区。

因此,setDefault方法级别,我在下面的SimpleDateFormat中专门设置它,

(分配是一个 java.util.Date作为属性的分配文档类,该属性命名为sigsmentingDate,映射到mongodb集合。在mongo db db sistigonmentDate中,topentenddate作为utc存储)

   java.text.DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy'T'HH:mm:ss.SSS");
   formatter.setTimeZone(TimeZone.getTimeZone(timezone));
   Date assignmentEndDate = assignment.getAssignmentEndDate();
   formatter.format(assignmentEndDate);

这样,它不会更改应用程序级时区域。这是这种情况的正确方法吗?

利用Java 8中包含的新日期时间API。

ZoneId zoneId = ZoneId.of("America/Chicago");

您可以从 Instant 开始,Java up date均等。

Instant instant = Instant.now();
ZonedDateTime zonedDateTime = instant.atZone(zoneId);

您也可以从 使用 ZonedDateTime

您可以将DateTime作为 LocalDateTime ,时区Anostic类并转换为ZonedDateTime。

LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt = ldt.atZone(zoneId);

您可以在旧日期时间类别中进行easliy Switch&通过在每个新的/旧日期类别上访问助手方法的新时间。

在保存到Mongo数据库时更改为Java Util日期

//From ZonedDateTime to java util date.
Date oldDate = Date.from(zdt.toInstant());
//From Instant to java util date
Date oldDate = Date.from(instant);
//From Date to Instant.
Instant instant = date.toInstant();

所有新的日期时间API都内置了默认的格式。

//2007-12-03T10:15:30-06:00[America/Chicago]
String zonedDatetime = zonedDateTime.toString();

对于Specfic格式,您可以始终将 DateTimeFormatter 传递到以下方法。

zonedDateTime.format(formatter)

相关内容

  • 没有找到相关文章

最新更新