将字符串日期转换为新格式Java

时间:2013-06-26 05:35:53

标签: java date simpledateformat

我正在尝试将数据库的字符串结果集的日期格式转换为标准格式,但使用simpledateformat会出现以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at CopyEJ.CopyEJ.main(CopyEJ.java:113)

RROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183):  [../../../src/share/back/util.c:838]

使用De-bug我发现变量time_stmp的值为“2013-04-19 17:29:06”我想投这个:

yyyyMMddhhmmss

这是代码:

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");

        ResultSet rs_dt = cmd1.executeQuery(dt);

        String time_stmp = null;

        while (rs_dt.next())
        {
            time_stmp = rs_dt.getString(1);
        }

        StringBuilder ts = new StringBuilder( df.format( time_stmp ) );

实现这一目标的最佳方法是什么?

7 个答案:

答案 0 :(得分:1)

您需要在此处使用DateFormat.parse(),因为参数的类型为String。另一方面,DateFormat.format()用于将Date个对象格式化为String

StringBuilder ts = new StringBuilder(df.format(df.parse(time_stmp)));

此外,建议将日期/时间数据保存为数据库中的TimeStamp,而不是String

答案 1 :(得分:1)

您的简单DateFormat具有错误的日期模式。您必须使用DB的模式将其解析为日期,然后将其解析回String。 试试这种方式:

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    ResultSet rs_dt = cmd1.executeQuery(dt);

    String time_stmp = null;

    while (rs_dt.next())
    {
       time_stmp = rs_dt.getString(1);
    }
    Date d = null;
    try {
       Date d = df.parse(time_stmp);
    } catch (ParseException ex) {
        Logger.getLogger(Prime.class.getName()).log(Level.SEVERE, null, ex);
    }
    SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddhhmmss");

    StringBuilder ts = new StringBuilder( df2.format(d) );

顺便说一下:
如果您希望输出为24h格式,则必须使用模式yyyyMMddHHmmss

答案 2 :(得分:0)

使用SimpleDateFormat.parse()字符串转换为日期

使用SimpleDateFormat.format()日期转换为字符串

现在一起:

SimpleDateFormat dbFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat stdFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String s = stdFormat.format(dbFormat.parse(input));

您可以修改格式以满足您的需求。

答案 3 :(得分:0)

问题是,从数据库检索的日期格式为yyyy-dd-MM HH:mm:ss,您尝试使用格式yyyyMMddhhmmss

解析它

你可以做这样的事情

    String date = "2013-04-19 17:29:06";
    Date d = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss").parse(date);
    SimpleDateFormat outputFormat = new SimpleDateFormat("yyyyMMddhhmmss");
    System.out.println(outputFormat.format(d));

答案 4 :(得分:0)

就像提到你需要使用

一样
SimpleDateFormat.parse()

此外,如果你的字符串是

形式
`2013-04-19 17:29:06`

您需要构建SimpleDateFormat以便像这样读取

`yyyy-MM-dd HH:mm:ss` //make sure you use uppercase H for 24 hour times

答案 5 :(得分:0)

您好,您可以使用以下代码格式化您选择的日期(例如:yyyy-MM-dd HH:mm:ss)

        Calendar calendar = Calendar.getInstance();
        Date calDate = calendar.getInstance().getTime();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("Calendar Date: " + calDate);
        System.out.println("Your Choice Date format (yyyy-MM-dd HH:mm:ss): "+dateFormat.format(calDate));

答案 6 :(得分:0)

这将有效

    SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd hhhh:mm:ss");
    String time_stmp ="2013-04-19 17:29:06";
    Date date=df.parse(time_stmp);
    StringBuilder ts = new StringBuilder( df.format( date ) );
    System.out.println(ts);