【问题标题】:Java date conceptJava 日期概念
【发布时间】:2013-11-01 07:48:17
【问题描述】:

我有像2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23这样的实用日期

我想将该日期存储到 mysql 数据库表列日期中

我正在使用这些代码

String datevalue=request.getParameter("date");

这个日期值是这样打印的2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23

 String[] datetokens=datevalue.split(",");
java.sql.Date dt = java.sql.Date.valueOf(new String(datevalue));

在插入时出现这些错误

java.lang.IllegalArgumentException

给我建议如何解决该问题并存储在数据库中

【问题讨论】:

    标签: java mysql database


    【解决方案1】:

    您应该使用STR_TO_DATE 函数。 在 INSERT 时尝试 typeCasting,如下所示:

    INSERT INTO MY_TABLE VALUE (STR_TO_DATE('5/15/2012 8:06:26 AM', '%c/%e/%Y %r'))
    

    【讨论】:

      【解决方案2】:

      您想使用日期格式对象来解析日期,例如SimpleDateFormat

      String dateValuesString = request.getParameter("date");
      String[] dateValueStrings = dateValuesString.split(",");
      SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
      for (String dateString : dateValueStrings) {
          Date date = sdf.parse(dateString); 
      }
      

      【讨论】:

        【解决方案3】:

        我实际上会使用JODA 来做你需要的事情;但是,SimpleDateFormat 或 JODA 可以解决问题。

        【讨论】:

          【解决方案4】:

          java.lang.IllegalArgumentException 是由于datetokens 的格式错误。由于split(",",它得到blank space)。使用trim()方法

          for(String token: datetokens){
          java.sql.Date dt = java.sql.Date.valueOf(new String(token.trim()));
          }
          

          【讨论】:

          • 这里传递的是 datevalue 而不是 datetokens
          • @kittureddy 你说得对。您应该在 datetokens 中使用 trim()。请参阅我编辑的答案。
          【解决方案5】:

          也可以这样尝试:-

          String dateValuesString = request.getParameter("date");
          String[] dateValueStrings = dateValuesString.split(",");
          SimpleDateFormat myFormat = new SimpleDateFormat("yy-MM-dd");
          for (String dateString : dateValueStrings) {
          String reformattedStr = myFormat.format(dateString);
           System.out.println(reformattedStr);
          }
          

          【讨论】:

            【解决方案6】:

            在这种情况下:

            • 您传递了一个以逗号 (,) 分隔的日期值列表。
              String datevalue=request.getParameter("date");

            • 将所有日期拆分为包含每个日期值的字符串数组。
              String[] datetokens = datevalue.split(",");
              SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", dateValue);
              ...指定要解析的日期格式。

            • 现在您需要迭代(for 循环)来访问数组中的每个字符串。
              for(String dateValue : datetokens){
              Date date = sdf.parse(dateValue.trim());
              java.sql.Date sqlDate = new java.sql.Date(date.getTime());
              // 这里在每次迭代时将 sqlDate 值插入 MySQL。
              }

            • 请不要忘记管理数据库连接并在插入时提供正确的查询。

            • 另外,处理ParseException 即。使用 try/catch 或 throws。

            【讨论】:

              【解决方案7】:

              以下代码将打印每个日期。

              String datevalue = "2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23, 2013-10-23";
                      String[] datetokens = datevalue.split(", ");
                      for (String each : datetokens) {
                          java.sql.Date dt = java.sql.Date.valueOf(each);
                          System.out.println(dt);
                      }
              

              您可以将dt 插入到数据库中。 split 方法中逗号 (,) 后面必须有空格(如 split(", "))。

              【讨论】:

              • 非常感谢它对我很有用
              猜你喜欢
              • 2018-08-02
              • 2017-01-13
              • 1970-01-01
              • 2012-09-05
              • 2016-08-30
              • 2014-02-25
              • 1970-01-01
              • 1970-01-01
              • 2016-09-21
              相关资源
              最近更新 更多