0

我想在java中将字符串日期转换为时间戳。以下是我编写的代码。传递的日期值采用19-SEP-2013格式。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
Date date = dateFormat.parse(tcmo.getCtsDate());
ps.setTimestamp(ctr++, new Timestamp(date.getTime());

变量ctr已经声明。psPreparedStatement对象。后来的代码包括ps.executeUpdate().

tcmo.getCtsDate()返回值 2013 年 9 月 19 日。

数据库只能接受格式为2013-09-19 00:00:00.0的时间戳

抛出的异常是Unparseable Date "19-SEP-2013". 谁能帮我清除这个?

4

3 回答 3

2

您的格式String( yyyy-mm-dd HH:mm:ss) 和您的输入 ( 19-SEP-2013) 不匹配。

需要一种格式dd-MMM-yyyy来解析对象StringDate

例如...

try {
    String text = "19-SEP-2013";
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
    Date date = sdf.parse(text);
    System.out.println(text + " to " + date);
} catch (ParseException exp) {
    exp.printStackTrace();
}

输出...

19-SEP-2013 to Thu Sep 19 00:00:00 EST 2013
于 2013-09-13T03:26:47.523 回答
0

尝试将第一行替换为

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");

这应该可以解决解析错误。

有关 SimpleDateFormat 的更多信息,包括什么是有效字母,可以在 Oracle JavaDocs 中找到

于 2013-09-13T03:26:52.483 回答
0

这是一个“陷阱”,使许多 Java 新手陷入困境。格式字符m分钟M几个月..

您的格式字符串"yyyy-mm-dd"实际上是years-minutes-days.

将格式字符串更改为"yyyy-MM-dd...",它将解决问题。

于 2013-09-13T03:31:38.267 回答