Asw*_*thy 1 java nsdateformatter
我有一个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();
}**
Run Code Online (Sandbox Code Playgroud)
bt gettng error as java.text.ParseException:Unparseable date:"2013-07-29 06:35:40:622 GMT"
主要(问题)是SimpleDateFormat无法识别文本GMT,它正在寻找时区的不同格式.
另一个问题是你的格式与你的文字不符......
你String的形式是
2013-07-29 06:35:40:622 GMT
Run Code Online (Sandbox Code Playgroud)
你的格式是以.的形式
yyyy-MM-dd HH:mm:ss.SSS zzz
^--------This is a naughty character...
Run Code Online (Sandbox Code Playgroud)
秒和毫秒由不同的字符分隔,这没有帮助
现在,如果我们用实际格式修复预期的格式,这将无法解决时区的问题......但是,对于我们来说,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();
}
Run Code Online (Sandbox Code Playgroud)
哪个输出......
Mon Jul 29 16:35:40 EST 2013
2013-07-29 06:35:40:622
Run Code Online (Sandbox Code Playgroud)