![](/img/trans.png)
[英]Good way to convert integer YYYYMMDD into java.util.Date with local time zone
[英]Convert java.util.Date to different time zone requested
根據請求的URL,我必須將Date轉換為其他請求的時區,並以String形式返回日期和時間。 我在Spring Boot和Mongo 3.2中使用Java 8
因此,在服務方法內部,我首先將時區設置如下,
TimeZone.setDefault(TimeZone.getTimeZone(TIME_ZONE))
但是我注意到,它將改變整個Java應用程序的時區。 因此,即使方法退出,該時區仍將是我之前設置的時區。
因此,我改為在下面的SimpleDateFormat
專門設置setDefault
方法級別,
(assignment是一個Assignmet文檔類,具有java.util.Date
作為映射為mongodb集合的名為assignmentEndDate的屬性。在mongo db中,assignmentEndDate存儲為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 util date equalivent開始。
Instant instant = Instant.now();
ZonedDateTime zonedDateTime = instant.atZone(zoneId);
要么
您也可以從使用ZonedDateTime開始
您可以將datetime用作LocalDateTime ,時區不可知類並轉換為ZonedDateTime。
LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt = ldt.atZone(zoneId);
您可以通過訪問每個新日期/舊日期時間類上的幫助程序方法,在舊日期時間類和新時間之間輕松切換。
保存到mongo數據庫時更改為Java util date
//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();
對於特定格式,您始終可以將DateTimeFormatter傳遞給以下方法。
zonedDateTime.format(formatter)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.