我想转换日期格式:" mm / dd / yyyy hh:mm#34;到" yyyy-mm-dd hh:mm:ss"

时间:2014-05-01 08:23:23

标签: java jdbc

来自jsp的响应采用以下格式:“mm / dd / yyyy hh:mm”,我想转换为db格式“yyyy-mm-dd hh:mm:ss”。

我试过这段代码:

public java.sql.Date getdateFormat(String datestring) throws ParseException {
    String datestr = "";
    try {
        java.util.Date date = new SimpleDateFormat("mm/dd/yyyy hh:mm a",
                Locale.ENGLISH).parse(datestring);
        atestr = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return getDateFromString(datestr);

}


public java.sql.Date getDateFromString(String string) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    java.util.Date finalDate = null;
    try {
        finalDate = sdf.parse(string);
    } catch (Exception e) {
        e.printStackTrace();
    }

    return new java.sql.Date(finalDate.getTime());

}

4 个答案:

答案 0 :(得分:1)

使用SimpleDateFormat时常见的错误是跳过文档并假设知道mm表示月份和mm表示分钟的时间。它没有。 mm仅表示分钟。如果您想要使用月份MM,如果您期望AM / PM,则仅使用a,并且仅使用hh 12小时制。我希望你的格式应该是

MM/dd/yyyy HH:mm

和你的输出

yyyy-MM-dd HH:mm:ss

BTW你不应该转换为String来使用JDBC。使用日期更快,更不容易出错。

答案 1 :(得分:0)

如果你想要的只是Date那么你就不需要了

atestr=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date);

只需在此阶段返回date

日期没有任何格式,基本上是一个数字。

答案 2 :(得分:0)

我基本上会这样做

        String dateInString = "20140611";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

        Date toDate = sdf.parse(dateInString);

        sdf = new SimpleDateFormat("yyyy-MM-dd");

        String tmpStr = String.format(sdf.format(toDate));

        System.out.println(tmpStr);

答案 3 :(得分:-1)

我们可以通过以下方式获取日期

DateFormat dfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parseDate = dfm.parse(datestring);

现在parseDate的格式为“yyyy-MM-dd HH:mm:ss”