我试图转换日期类型" Mon 1月14日00:00:00 GMT-12:00 2013"到java.sql.Date yyyy / MM / dd Type,我写了下面的代码。在尝试执行以下代码时,我得到"无法解析的日期"错误..请帮我解决下面的问题。
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
try{
java.sql.Date xdate=new java.sql.Date(df.parse("Mon Jan 14 00:00:00 GMT-12:00 2013").getTime());
System.out.println(xdate.toString());
}catch(Exception x)
{
System.out.println(x.getMessage());
}
答案 0 :(得分:3)
与其他答案一样,您使用错误的模式来解析您所拥有的日期字符串。
实际上,您需要该模式,但要将Date
对象转换为所需的模式。但首先,您需要获取给定日期字符串的Date
对象。为此,您需要构建与您拥有的字符串完全匹配的模式。
日期格式有两个方面: -
因此,您首先需要使用DateFormat#parse()
,然后DateFormat#format()
使用不同的模式。
所以,这是您需要的代码: -
String fromDate = "Mon Jan 14 00:00:00 GMT-12:00 2013";
Date date = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse(fromDate);
java.sql.Date toDate = new java.sql.Date(date.getTime());
System.out.println(new SimpleDateFormat("yyyy/MM/dd").format(toDate));
答案 1 :(得分:1)
你正在使用
new SimpleDateFormat("yyyy/MM/dd")
尝试以yyyy/MM/dd
格式解析日期时{p>} Mon Jan 14 00:00:00 GMT-12:00 2013
将您要提交的日期字符串解析为yyyy/MM/dd
表单,然后对其进行解析。
答案 2 :(得分:1)
嗯,您提供的日期不是您提供的格式。您有一个ISO字符串作为参数,但您的格式化程序需要“yyyy / MM / dd”。你为什么期望这个工作?
答案 3 :(得分:1)
您需要以下简单日期格式
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
更多日期和时间模式: Simple Date Format
答案 4 :(得分:0)
尝试
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyyy", Locale.US);
如果您的本地语言不是英语,并且您要解析Mon
和Jan
,则需要Locale.US。日期解析器可能是语言敏感的,就像我们的情况一样