我试图解析格式化的字符串日期,得到解析错误
输入日期为" 11月11日星期三14:24:46 IST 2015",需要输出日期为" 2015年11月11日星期三14:24:46 IST"
noip2
获取错误为java.text.ParseException:无法解析日期:" Wed Nov 11 2015 14:24:46 IST"
答案 0 :(得分:1)
我已经更新了我的答案,就像您的问题/评论中提到的那样进行解析。见下面的解释:
"Wed Nov 11 14:24:46 IST 2015"
以下
"Wed Nov 11 2015 14:24:46 IST"
我设置了两个SimpleDateFormat对象,如下所示
SimpleDateFormat sourceFormat, destinationFormat;
//this is to format the string to Date object
sourceFormat = new SimpleDateFormat("EEE MMM d kk:mm:ss zzz yyyy", Locale.US);
//this is to format the Date object to desired pattern
destinationFormat = new SimpleDateFormat("EEE MMM d yyyy kk:mm:ss zzz", Locale.US);
然后我将时区设置如下
TimeZone istTimeZone = TimeZone.getTimeZone("Asia/Kolkata");
sourceFormat.setTimeZone(istTimeZone);
destinationFormat.setTimeZone(istTimeZone);
我使用sourceFormat对象将日期字符串格式化为Date对象,如下所示:
Date sourceDate = sourceFormat.parse(target);
//output: Wed Nov 11 08:54:46 GMT 2015
然后我使用目标格式来格式化表示字符串的日期对象,如下所示:
Date destinationDate = destinationFormat.format(d);
//output: Wed Nov 11 2015 14:24:46 IST
基本上为了获得合法的Date对象,我必须使用第一个SimpleDateFormat sourceFormat,它包含在String中映射日期的模式。一旦使用String创建了一个合法的Date对象,那么我使用第二个格式化器来重新格式化Date对象。下面是完整的代码,如果复制/粘贴应该给出输出。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
public class ParseDate {
public static void main(String[] args) {
try {
String target = "Wed Nov 11 14:24:46 IST 2015";
SimpleDateFormat sourceFormat, destinationFormat;
sourceFormat = new SimpleDateFormat("EEE MMM d kk:mm:ss zzz yyyy", Locale.US);
destinationFormat = new SimpleDateFormat("EEE MMM d yyyy kk:mm:ss zzz", Locale.US);
TimeZone istTimeZone = TimeZone.getTimeZone("Asia/Kolkata");
sourceFormat.setTimeZone(istTimeZone);
destinationFormat.setTimeZone(istTimeZone);
Date d = sourceFormat.parse(target);
System.out.println(d.toString());
//output: Wed Nov 11 08:54:46 GMT 2015
System.out.println(destinationFormat.format(d));
//output: Wed Nov 11 2015 14:24:46 IST
} catch (ParseException pe) {
pe.printStackTrace();
}
}
}