【问题标题】:How to Convert String To DateTime in java如何在java中将字符串转换为日期时间
【发布时间】:2013-12-12 16:40:37
【问题描述】:

我正在尝试在 sql server 2005 中存储日期 我在 sql server 中使用“日期时间”数据类型 在java程序中我将字符串作为日期传递

例如。

String DateStr = "12/12/2013";

Date d = new Date();
java.sql.Date d1 = new java.sql.Date(d.getTime());

String sql = "INSERT INTO info (date) VALUES ( ? )";

try {
      pstmt = con.prepareStatement(sql);
      pstmt.setDate(1, d1);
      pstmt.executeUpdate();
     } catch (SQLException e) {
            System.out.println("Error:" + e);
     }

上面的代码正在运行...但我想使用 String DateStr = "12/12/2013"; insted d.getTime() 因为我使用 jquery datepicker 将日期作为字符串传递给 java 函数

【问题讨论】:

    标签: java sql-server date datetime datepicker


    【解决方案1】:

    您需要使用SimpleDateFormat 将您的字符串解析为日期,然后使用该日期。

    Date d = new SimpleDateFormat("dd/MM/yyyy").parse(DateStr); // This throws a ParseException
    
    // Rest everything stays pretty much the same
    java.sql.Date d1 = new java.sql.Date(d.getTime());
    ...
    

    【讨论】:

    • 抱歉为时已晚....它存储当前日期,例如(2013 年 11 月 28 日星期四)而不是 DateStr
    • DateStr 是保存日期的字符串。它有什么格式?
    • 在 sql server 2005 中,我使用 datetime 作为我的数据类型并希望存储 String DateStr="25/11/2013";这样的字符串进入日期时间但失败
    【解决方案2】:
    public long convertLong(String value) {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        Date getDate = null;
        long returnDate = 0l;
        try {
            getDate = (Date) formatter.parse(value);
            returnDate = getDate.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return returnDate;
    }
    

    输入:12/12/2013 输出:1386786600000

    【讨论】:

    • 以及如何使用它来存储在数据库中
    • 就像你正在做的java.sql.Date d1 = new java.sql.Date(d.getTime()); 我不确定但会工作。我刚刚为您提供了从您的 dd/MM/yyyy 获取 d.getTime() 的解决方案
    • 你试过java.sql.Date d1 = new java.sql.Date(convertLong("12/12/2013"))吗?
    【解决方案3】:

    首先在 datetime 对象 中转换字符串,而不是直接将 d1 传递给您的代码

    String DateStr = "12/12/2013";
    DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy ");
    DateTime dt = formatter.parseDateTime(DateStr);
    String sql = "INSERT INTO info (date) VALUES ( dt )";
    try {
          pstmt = con.prepareStatement(sql);
          pstmt.setDate(1, d1);
          pstmt.executeUpdate();
         } 
    catch (SQLException e) {
                System.out.println("Error:" + e);
         }
    

    【讨论】:

    • 感谢您的回复,但它显示'java.lang.IllegalArgumentException: Invalid format: "28/11/2013" is too short'
    • 如果我使用 pstmt.setDate(1, dt);它显示“日期时间无法转换为日期”
    猜你喜欢
    • 2015-11-24
    • 2015-08-17
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2020-10-21
    相关资源
    最近更新 更多