【问题标题】:How can I convert a string to a "datetime"-friendly format?如何将字符串转换为“日期时间”友好格式?
【发布时间】:2011-11-10 02:03:06
【问题描述】:

我基本上是在尝试将类似于以下字符串的字符串:“2011-11-9 18:24:12.3”转换为我可以插入到数据库表中的格式,该表声称该特定列属于“日期时间”类型。我想我可以按照preparedStatement.setTimestamp(...) 的方式做一些事情,但我似乎无法正确创建时间戳。任何人都可以建议将上述字符串转换为时间戳或与 MySQL 的“日期时间”类型兼容的其他类型的最简单方法吗?任何帮助将不胜感激。

到目前为止,我已经尝试过这样做:

String strDateTime = "2011-11-9 18:24:12.3";
Timestamp timeStamp = new Timestamp((new Date(strDateTime)).getTime());
preparedStatement.setTimestamp(1, timeStamp);

【问题讨论】:

  • 该问题的答案似乎与我尝试过的类似,但没有奏效。当我尝试将字符串传递给 Date 构造函数时,Tomcat 抛出了一个非法参数异常。我原以为它可以识别这种字符串格式,但我猜不是。格式化字符串以便识别的最佳方法是什么?

标签: java mysql date time timestamp


【解决方案1】:

啊,所以,问题很可能不是mysql的日期时间,而是日期。

Date(Strings s) 构造函数是currently deprecated,建议使用SimpleDateFormat,它可以让你使用任何你想要的格式。

【讨论】:

  • +1 但我建议使用 JodaTime 库,与 SimpleDateFormatter 相比,它是线程安全的并且具有更多功能
  • 那么像SimpleDateFormat df = new SimpleDateFormat("yyyy-M-d kk:mm:ss.S");这样的东西呢?如果是这样,一旦我创建了这种格式,我是否只是在将字符串传递给构造函数之前使用 df.format(...) 格式化字符串?
  • 不,你想要parse 而不是format: SimpleDateFormat df = new SimpleDateFormat("yyyy-M-d kk:mm:ss.S");日期日期 = df.parse(strDateTime);时间戳timeStamp = new Timestamp(date.getTime());
【解决方案2】:

您是否尝试过拆分并制作成您可以使用的格式?这假设它始终采用相同的格式。创建一个新字符串,将旧字符串拆分并以有用的方式重新排列。如果这是最终用户提供的字符串,您可能必须先对其进行验证并检查以确保其可用。

【讨论】:

  • 好吧,我实际上是使用 jQuery DateTimePicker 插件从网页上的字段中提取日期和时间。然后我使用 JavaScript 将其转换为与存储在数据库中的格式相同的格式,因为我认为这是最简单的。然后我通过 AJAX 调用将它发送到 servlet。
  • 然后我使用 JavaScript 将其转换为与存储在数据库中的格式相同的格式 - 虽然看起来您正在这样做,但实际情况并非如此。数据库不将日期存储为字符串,因此您使用 JavaScript 将其转换为与数据库将日期转换为相同的字符串格式。这可能没有你想象的那么有用。
猜你喜欢
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多