1

我有一个Date已转换为String要传递给 JavaSocket服务器的 a。该值的一个示例是06:19:18p.m. 13/01/2011

Socket服务器中,我试图在将其Date写入 SQL 数据库表之前将其转换回一个值,但转换后的值为NULL. 我也尝试将值作为原始值写入 SQL 数据库String,但除非其中没有冒号、句号或正斜杠字符,否则它不会写入。

有什么办法可以解决这个问题吗?很抱歉,我无法查看或发布堆栈跟踪,因为我没有运行我的 Jar 文件的服务器的管理员访问权限。

我的转换代码String是:

Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ssa dd/MM/yyyy");
try { 
    date = sdf.parse(timestamp);
} 
catch (ParseException e) {
    e.printStackTrace();
}
4

3 回答 3

2

我不确定为什么您无法正确解析,但您对此的想法全错了。您应该创建 TIMESTAMP 或 DATE 类型的列,而不是在数据库中保存字符串。然后您可以使用 JDBC 中的 getDate() 来获取日期对象。

于 2011-01-13T18:35:22.323 回答
2

SimpleDateFormat 模式中的“a”只能解析“AM”或“PM”,但不能解析“pm”。只需更改它,您的解析就会成功。

于 2011-01-14T18:25:12.603 回答
0

这可能只是一个错字,但您的“06:19:18p.m. 13/012011”示例与您的简单日期格式不匹配,因为它期望您的日期中有两个斜杠。

找到一种方法来获取堆栈跟踪或在其他地方分别在数据上尝试此代码将非常有用,这样您就可以确保您不仅获得了错误的数据。

于 2011-01-13T18:42:44.180 回答