我正在尝试将以下字符串解析为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
?
答案 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)
符合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);