Java - SimpleDateFormat从String问题解析

时间:2014-04-15 04:43:33

标签: java datetime simpledateformat

我正在尝试将以下字符串解析为Date对象:

String str = "04/15/2014 10:30:24"

我正在使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
java.util.Date orderDate = sdf.parse(str);
java.sql.Date orderSqlDate = new java.sql.Date(orderDate.getTime());

但始终返回orderSqlDate:2014年4月15日00:00:00

如何在java中使用SimpleDateFormat

4 个答案:

答案 0 :(得分:2)

你也是正确的。

但是要以您想要的格式获得结果,您需要在解析字符串后使用.format(“/ your format /”)方法。

String date = "15/12/2014 10:42:24";

SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

Date parseDate = dateParser.parse(date);

formatter.format(parseDate) // this will change format of date as you want.

答案 1 :(得分:2)

java.sql.Date javadoc

  

符合SQL DATE的定义,即毫秒值   由java.sql.Date实例包装必须进行标准化' 通过设置   小时,分钟,秒和毫秒为零   与实例关联的特定时区。

如果您要使用java.sql.Date,则无法解决此问题。

答案 2 :(得分:1)

我不认为你解析的方式是错误的。你确定你打印orderDate吗?

以下代码演示了解析和格式化(打印)。

public static void main(String[] args) {
    String format = "MM/dd/yyyy HH:mm:ss";

    try {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date orderDate = new SimpleDateFormat(format).parse("04/15/2014 10:30:24");
        System.out.println(sdf.format(orderDate));
    } catch (Exception e) {
        e.printStackTrace();
    }

}

答案 3 :(得分:1)

在SimpleDateFormat构造函数中提供Locale,否则解析可能取决于您的本地设置:

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.ROOT);