Java中的日期转换错误

时间:2013-01-16 18:07:21

标签: java date-format

我试图转换日期类型" 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());
            }

5 个答案:

答案 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);

如果您的本地语言不是英语,并且您要解析MonJan,则需要Locale.US。日期解析器可能是语言敏感的,就像我们的情况一样