【问题标题】:Issue converting from java.util.Date to java.sql.Timestamp从 java.util.Date 转换为 java.sql.Timestamp 的问题
【发布时间】:2011-08-17 09:50:38
【问题描述】:

我正在尝试将用户提供的日期放入 SQL 数据库,我有以下几行来处理字符串并将其转换为 java.sql.Timestamp 对象。

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd'T'hh:mm");
java.util.Date badDate = formatter.parse(request.getParameter("datetime")); 
Timestamp date = new Timestamp(badDate.getTime());

问题是,badDate 是用户输入的正确日期,但日期总是设置为错误的月份和日期,通常是 1 月 2 日,以及正确的时间和年份。当我尝试转换为 java.sql.Date 对象时遇到了同样的问题,但是时间也设置为午夜。经过一番搜索,我找不到任何有类似问题的人,也许这里有人见过这样的东西?

【问题讨论】:

  • 当您以 1 月 2 日结束时,您预计的日期是什么? request.getParameter("datetime") 返回的值是多少?您是基于实际存储在数据库中的值,还是仅在访问数据库之前打印出 java.sql.Timestamp 就得到了错误的日期?

标签: java sql types


【解决方案1】:

日期格式错误,应该是yyyy-MM-dd'T'HH:mm

有关日期格式的详细信息,请参阅this document

m 代表分钟
M 代表月份
h 代表上午/下午 (1-12) 小时
H 代表 24 小时制小时

如果你能给出你试图解析的日期值的样本会更好。

【讨论】:

    【解决方案2】:

    你想要"yyyy-MM-dd'T'hh:mm"(注意大写的MM)。否则你的月份在格式字符串中是错误的。

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 1970-01-01
      • 2018-06-13
      • 2011-06-29
      • 1970-01-01
      • 2013-01-27
      • 2012-09-12
      • 1970-01-01
      • 2017-10-08
      相关资源
      最近更新 更多