【发布时间】:2020-10-01 04:11:48
【问题描述】:
我正在使用 Java 的默认 TimeZone 和 Calendar 类来尝试获取不同区域的时间,但是当我尝试使用它时,它没有考虑任何 +0x:00。例如,当我输入“欧洲/英格兰”时,它返回 1:30,而实际上是 2:30,因为现在英格兰使用的是 GMT+1,而不是 GMT。
String timeZone = raw.split(" ")[1];
Calendar calendar = new GregorianCalendar();
TimeZone tz;
try {
tz = TimeZone.getTimeZone(timeZone);
calendar.setTimeZone(tz);
} catch (Exception e) {
event.getChannel().sendMessage("Couldn't find time-zone for: " + timeZone +
".\n*Usage: !time <continent/city>*\n*You can find TZ names here: " +
"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List*").queue();
return;
}
long hours = calendar.get(Calendar.HOUR_OF_DAY);
String minutes = String.valueOf(calendar.get(Calendar.MINUTE));
if (minutes.length() == 1)
minutes = "0" + minutes;
User author = event.getAuthor();
event.getChannel().sendMessage(author.getAsMention() + " The current time is: **" + hours + ":" + minutes + "** [" + tz.getDisplayName() + "]").queue();
【问题讨论】:
-
你能输入 raw 的值吗?
-
没有名为
Europe/England的区域,您现在只需恢复 GMT 区域即可。