我有一个Date
已转换为String
以传递给Java Socket
服务器。此值的一个示例是06:19:18p.m. 13/01/2011
。
在Socket
服务器中,我尝试将其转换回Date
值,然后再将其写入SQL数据库表,但转换后的值为NULL
。我也尝试将值作为原始String
写入SQL数据库,但除非其中没有冒号,句号或正斜杠字符,否则它不会写入。
有什么方法可以解决这个问题吗?很抱歉我无法查看或发布堆栈跟踪,因为我没有管理员访问服务器我正在运行我的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();
}
答案 0 :(得分:2)
我不确定为什么你不能正确解析,但你认为这是错误的。您应该创建TIMESTAMP或DATE类型的列,而不是在数据库中保存String。然后,您可以使用JDBC中的getDate()来获取日期对象。
答案 1 :(得分:2)
SimpleDateFormat模式中的“a”只能解析“AM”或“PM”,而不能解析“p.m.”。只需改变它,你的解析就会成功。
答案 2 :(得分:0)
这可能只是一个错字,但你的“06:19:18 p.13m 2011”的例子与你的简单日期格式不符,因为它期待你的日期有两个斜杠。
找到一种方法来获取堆栈跟踪或在其他地方单独尝试此代码非常有用,这样您就可以确保不仅仅是获取错误的数据。