我在GMT
yyyy-MM-dd HH:mm:ss.SSS zzz
格式化的字符串值
eg: 2013-07-29 06:35:40:622 GMT.
我希望将其作为日期对象并将其转换为IST
时区。
我这样做了...... **
String GMT = "2013-07-29 06:35:40:622 GMT";
DateFormat utcDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz");
utcDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
try {
utcDateFormat.parse(GMT);
} catch (ParseException e) {
e.printStackTrace();
}**
bt gettng错误,因为java.text.ParseException:无法解析的日期:“2013-07-29 06:35:40:622 GMT”
答案 0 :(得分:6)
主要(问题)是SimpleDateFormat
无法识别文字GMT
,它正在为时区寻找不同的格式。
另一个问题是你的格式与你的文字不符......
您的String
采用
2013-07-29 06:35:40:622 GMT
您的格式为
yyyy-MM-dd HH:mm:ss.SSS zzz
^--------This is a naughty character...
秒和毫秒由不同的字符分隔,这不会有帮助
现在,如果我们使用实际格式修复预期格式,则无法解决时区问题...但是,对于我们来说,DateFormat
提供了lenient
方法,这允许我们稍微“弯曲”格式规则......
所以,有了所有这些,你可以尝试类似......
String text = "2013-07-29 06:35:40:622 GMT";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
TimeZone gmt = TimeZone.getTimeZone("GMT");
sdf.setTimeZone(gmt);
sdf.setLenient(false);
try {
Date date = sdf.parse(text);
System.out.println(date);
System.out.println(sdf.format(date));
} catch (Exception e) {
e.printStackTrace();
}
哪些输出......
Mon Jul 29 16:35:40 EST 2013
2013-07-29 06:35:40:622
答案 1 :(得分:-1)
试试这个。
Date d=new Date("2013-07-29 06:35:40:622");
Date newDate=new Date(d.getYear(),d.getMonth(),d.getDate());
Time t=new Time(d.getHours()+5, d.getMinutes()+30, d.getSeconds());
答案 2 :(得分:-1)
Joda Time支持时区转换。 http://www.joda.org/joda-time/userguide.html#Changing_TimeZone