如何在Java中将字符串日期转换为dd-MMM-yyyy格式的时间戳?

如何在Java中将字符串日期转换为dd-MMM-yyyy格式的时间戳?,java,sql,Java,Sql,我想用java将字符串日期转换为时间戳。以下是我写的代码。传递的日期值格式为2013年9月19日 变量ctr已声明。ps是PreparedStatement对象。后面的代码包括ps.executeUpdate() tcmo.getCtsDate()返回2013年9月19日的值 数据库只能接受格式为2013-09-19 00:00:00.0的时间戳 引发的异常是不可解析日期“2013年9月19日”。有人能帮我清除这个吗?您的格式字符串(yyy-mm-dd HH:mm:ss)和您的输入(2013年9

我想用java将字符串日期转换为时间戳。以下是我写的代码。传递的日期值格式为2013年9月19日

变量ctr已声明。ps是
PreparedStatement
对象。后面的代码包括
ps.executeUpdate()

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

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


引发的异常是不可解析日期“2013年9月19日”。有人能帮我清除这个吗?

您的格式
字符串
yyy-mm-dd HH:mm:ss
)和您的输入(
2013年9月19日
)不匹配

字符串
解析为
日期
对象需要
dd-MMM-yyyy
格式

例如

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

尝试将第一行替换为

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
这将解决解析错误

关于SimpleDataFormat的更多信息,包括什么是有效字母。

这是一个“陷阱”,陷阱了许多java新手。格式字符
m
表示分钟,
m
表示月份

您的格式字符串
“yyyy-mm-dd”
实际上是
年-分钟-天


将格式字符串更改为
“yyyy-MM-dd…”
将解决此问题。

@SotiriosDelimanolis我不确定我是否理解此问题。格式化程序非常重要,它需要能够知道输入以什么形式出现,以便知道如何最好地处理
字符串的每个部分。
…我的意思是,因为最终目标是插入到数据库中。您可以从毫秒的时间创建一个timestamp对象。是的,OP会这样做…
新建timestamp(date.getTime())
,问题似乎是将
字符串
值放入
日期
对象中…或者我忽略了一点:PNo您得到了它,我没有。@SotiriosDelimanolis感谢你愿意帮忙:)始终感谢你的帮助;)
tcmo.getCtsDate()
返回什么类型的
对象?
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");