java – TimeZone. Gettimezone (“CST”) returns GMT
•
Java
I'm converting time from CST to local time, but gettimezone doesn't seem to work properly
String cstTime = "2013-06-21 14:00:00"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("CST")); Date date = null; try { date = simpleDateFormat.parse(cstTime); } catch (ParseException e) { System.out.println("Parse time error"); e.printStackTrace(); } TimeZone destTz = TimeZone.getDefault();//here I should get EDT on my phone simpleDateFormat.setTimeZone(destTz); String convertedLocalTime = simpleDateFormat.format(date); //the converted time I get is "2013-06-21 10:00:00" //but it should be "2013-06-21 15:00:00"
It seems to use GMT instead of CST. The following is what I got during debugging:
String abc = TimeZone.getTimeZone("CST").toString(); System.out.println("CST:"+abc); Output: I/System.out(19404): CST:java.util.SimpleTimeZone[id=GMT,offset=0,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0]
Does it use GMT? Why? Thank you in advance!
Edit:
Finally got it by using it
simpleDateFormat.setTimeZone(TimeZone.getTimeZone( "GMT-5")); //GMT-5 is for CDT,I found my server is actually using CDT not CST
Still don't know why using the string "CST" doesn't work properly
Solution
Javadoc from gettimezone:
Returns a TimeZone corresponding to the given id,or GMT for unkNown ids. An ID can be an Olson name of the form Area/Location,such as America/Los_Angeles. The getAvailableIDs() method returns the supported names.
Try using getavailableids?
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码