我想將給定的UTC字符串日期轉換爲UTC日期對象。 我得到這種格式的UTC字符串dd-MMM-yyyy hh:mm:ss.sssss aa 我想將此String對象轉換爲Date對象。 我試圖通過將時區設置爲「UTC」,它不工作SimpleDateFormat。想要將給定的UTC字符串對象轉換爲UTC日期對象
對我來說唯一的一件事是,將默認的JVM時區強制設置爲UTC,而我不希望這會改變我在許多進程中使用的JVM時間。
請建議。
我想將給定的UTC字符串日期轉換爲UTC日期對象。 我得到這種格式的UTC字符串dd-MMM-yyyy hh:mm:ss.sssss aa 我想將此String對象轉換爲Date對象。 我試圖通過將時區設置爲「UTC」,它不工作SimpleDateFormat。想要將給定的UTC字符串對象轉換爲UTC日期對象
對我來說唯一的一件事是,將默認的JVM時區強制設置爲UTC,而我不希望這會改變我在許多進程中使用的JVM時間。
請建議。
A java.util.Date
對象不包含時區信息,所以不存在「UTC Date
對象」之類的東西。 A java.util.Date
只不過是自01-01-1970,00:00:00格林尼治標準時間以來的幾毫秒內的一個包裝,因此您可以看到一個Date
物體指向「絕對」時間點,無論時區。
如果你想打印在一定的時區一個Date
對象(例如UTC),然後設置使用Date
格式化SimpleDateFormat
對象所需的時區:
Date now = new Date();
DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
// Prints the date in the UTC timezone
System.out.println(df.format(now));
如果您正在使用在Java 8中,使用新的java.time
API會更好,因爲API的日期和時間比舊的java.util.Date
和java.util.Calendar
要好得多。例如,使用ZonedDateTime
如果希望知道UTC日期和時間:
DateTimeFormatter df = DateTimeFormatter.ofPattern("dd-MMM-yyyy hh:mm:ss.SSSSS a")
.withZone(ZoneOffset.UTC);
ZonedDateTime dateTime = ZonedDateTime.parse("31-May-2016 06:54:16.78000 AM", df);
如果您使用的是Java 7或以上,可以考慮使用Joda Time。
Jesper謝謝你的回覆..我已經嘗試了上面的代碼..因爲我的輸出應該是java.util.Date對象,所以只要我將輸出返回給此對象,它就會拾取JVM默認時區並添加到它。我的服務器時間在CEST,所以它給了我相當於CEST的日期。此外,我的Integartion服務器有JDK 1.7,我不能使用java.time,因爲它隨附更高的服務器版本,所以無法升級到JDK1.8。 –
'Date'沒有時區。 –
總是發佈您的代碼,預期或期望的結果以及實際結果很有幫助。 – nateyolles
請在發佈前徹底搜索Stack Overflow。 –