【发布时间】:2021-06-10 13:09:46
【问题描述】:
我想更改给定日期的时区。我使用这段代码,但我没有好的结果。 我的输入是欧洲/巴黎的“2020-06-16 14:00:00”时间,我想将其更改为 UTC,这意味着我想得到“2020-06-16 12:00:00”,但是我得到初步结果“2020-06-16 14:00:00”。
try {
// Calendar calParis = Calendar.getInstance();
String heure = "1400";
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2020-06-16");
String hour = heure.substring(0, heure.length() - 2);
String minute = heure.substring(heure.length() - 2);
Calendar cal = Calendar.getInstance();
String datenew = "2020-06-16" + " " + hour + ":" + minute + ":00";
SimpleDateFormat sdfDatenew = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
Date thisDate = sdfDatenew.parse(datenew);
cal.setTime(thisDate);
cal.setTimeZone(TimeZone.getTimeZone("Europe/UTC"));
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
String dateISO = null;
dateISO = sdfDate.format(cal.getTime());
System.out.println("Time in ISO: " + dateISO);
} catch (Exception ex) {
}
【问题讨论】:
-
我在这里找到了您问题的答案stackoverflow.com/questions/2891361/…
-
这能回答你的问题吗? How to set time zone of a java.util.Date?
-
我测试了代码 SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));日期日期 = isoFormat.parse("2010-05-23T09:01:02");但它不起作用
-
你能用
ZonedDateTime和ZoneId吗?那么解决方案可能很简单。 -
... 还是
OffsetDateTime和ZoneOffset.UTC?这意味着使用java.time而不是java.util.Date和java.text.SimpleDateFormat。