我正在开发桌面应用程序。它将从具有以下内容的用户的文本文件中输入:
..................................
..................................
Mon Jul 9 14:41:07 MDT 2012
..................................
..................................
..................................
我正在使用此信息并使用jfreechart库创建时间序列图表。时区可以是世界上任何可用的东西。但是当我使用此文件时,其默认时区是sytem的时区(IST),因此不显示MDT时间。当我尝试从日期捕获时区然后使用
TimeZone.setDefault(TimeZone.getTimeZone("MDT"));
它不起作用。当我使用MDT,CDT等时区缩写时,如何更改Java中的默认时区?
答案 0 :(得分:3)
Theres没有名为MDT
的时区,它是MST7MDT。使用:
TimeZone.setDefault(TimeZone.getTimeZone("MST7MDT"));
答案 1 :(得分:3)
MDT不是时区密钥,它是时区的短显示名称,因此TimeZone.getTimeZone(“MDT”)将返回默认时区GMT。山地时间的关键是MST,MST7MDT等。因此,您需要确定时区的关键。请注意,相同的短显示名称有许多不同的键,例如对于MDT shortName,有美国/山区,美国/亚利桑那州,SystemV / MST7MDT,纳瓦霍,墨西哥/ BajaSur,MST7MDT和MST的钥匙。
答案 2 :(得分:1)
使用Calendar类中的setTimeZone(...)方法。
答案 3 :(得分:0)
谢谢你们。感谢您的快速回复。 @vikas你的回答证明更有用。我正在使用以下代码,它运作良好。
String timezoneLongName = "";
String fileTimeZone = "MDT"; //timezone could be anything, getting from file.
Date date = new Date();
String TimeZoneIds[] = TimeZone.getAvailableIDs();
for (int i = 0; i < TimeZoneIds.length; i++) {
TimeZone tz = TimeZone.getTimeZone(TimeZoneIds[i]);
String tzName = tz.getDisplayName(tz.inDaylightTime(date),TimeZone.SHORT);
if(fileTimeZone.equals(tzName)){
timezoneLongName = TimeZoneIds[i];
break;
}
}
if(timezoneLongName != null && !timezoneLongName.isEmpty() && !timezoneLongName.trim().isEmpty() && timezoneLongName.length() != 0){
TimeZone.setDefault(TimeZone.getTimeZone(timezoneLongName));
}
虽然有超过一个条目用于&#34; MDT&#34;时区,但它解决了我的问题,在第一场比赛本身没有任何问题。我已经测试了CDT,MDT和CDT时区的代码,它运行得非常好。谢谢伙计!!!