【发布时间】:2017-06-15 06:40:46
【问题描述】:
我正在尝试将IST 转换为UTC 纪元Java
但不是从 IST 中减去 5.30 小时,而是在 IST 中添加 5.30
public static long convertDateToEpochFormat(String date) {
Date convertedDate = null;
try {
LOGGER.info(date);
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
LOGGER.info(date);
convertedDate = formatter.parse(date);
LOGGER.info(convertedDate);
} catch (ParseException e) {
e.printStackTrace();
}
return convertedDate.getTime() / 1000L;
}
我得到的日志语句是:
2017-01-01 00:00:00
2017-01-01 00:00:00
Sun Jan 01 05:30:00 IST 2017
由于 UTC 转换,理想情况下应该是 12 月 31 日 18:30:00。
谁能告诉我怎么了?
【问题讨论】:
-
当伦敦 (UTC) 的时间为
0:00时,印度 (IST) 的早上时间为5:30。为什么你会期待别的?您正在解析日期字符串,并告诉系统将该日期字符串视为 UTC 时间。然后,您使用默认时区打印它,因此它将在该时区打印 same time。 -
您没有将 IST 转换为 UTC。您正在解析 UTC 并以系统默认值打印,这可能是 IST。
-
@Andreas 你的观点很有道理。但我建议不要将 UTC 称为“伦敦”时间。伦敦时间存在夏令时 (DST) 等异常,因此它实际上不是 UTC。这种用词不当会造成很多混乱。
-
@OleV.V.我同意这会很棒!但是,我只将其标记为重复。我没有否决它。尽管如此,我会说这个问题本身的质量相当好,所以我认为没有理由拒绝投票。但是,如果这是一个骗局,我认为最好将所有答案放在同一个帖子中。
标签: java timestamp java.util.date