Java 将字符串解析为mysql日期

Java 将字符串解析为mysql日期,java,mysql,Java,Mysql,我有一个图形用户界面,它需要一些用户输入,也需要当前日期。然后我需要将它们存储在数据库中。一切都很好,但我无法理解如何将date字段的输入字符串解析为mysql date,以便将其插入数据库 我有这样的代码 Date date = txtToday.getText(); 我知道应该将其解析为与数据数据类型兼容的类型。 此Date类型来自java.sql.Date。 如何克服这个问题?MySQL的默认日期字段格式是:YYYY-MM-DD try { SimpleDateFormat sd

我有一个图形用户界面,它需要一些用户输入,也需要当前日期。然后我需要将它们存储在数据库中。一切都很好,但我无法理解如何将date字段的输入字符串解析为mysql date,以便将其插入数据库

我有这样的代码

Date date = txtToday.getText();
我知道应该将其解析为与
数据
数据类型兼容的类型。 此
Date
类型来自
java.sql.Date

如何克服这个问题?

MySQL的默认日期字段格式是:YYYY-MM-DD

try {
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
    Date dob = null;
    dob = sdf.parse(txtToday.getText());
    java.sql.Date sqlDate = new java.sql.Date(dob.getTime());
    c1.setDOB(sqlDate); //use this sqlDate for inserting into Database
    } catch (ParseException e) {
          System.out.println("Parse exception,incorrect input in the textbox");
          e.printStackTrace();
}
而在Java中,Date类(在Java.util包中提供)的默认格式是dow mon dd hh:mm:ss zzz yyyy

所以用这个:

    Date date = txtToday.getText();
    String pattern = "yyyy-MM-dd";
    SimpleDateFormat formatter = new SimpleDateFormat(pattern);
    String mysqlDateString = formatter.format(date);
    System.out.println("Java's Default Date Format: " + date);
    System.out.println("Mysql's Default Date Format: " + mysqlDateString);

如果这行代码有效

Date date = txtToday.getText();
然后利用时间将其转换为sql日期

java.sql.Date sqlDate = new java.sql.Date(date.getTime());
注意安全

使用java.time 使用现代的java.time类,而不是麻烦的遗留日期时间类

无需使用
java.sql.Date
。该类将替换为
LocalDate
。该类表示一个仅限日期的值,不包含一天中的时间和时区

符合JDBC 4.2的JDBC驱动程序可以通过调用以下命令直接处理java.time类型:


  • myprepsmt.setObject(…,myLocalDate)

  • LocalDate ld=myResultSet.getObject(…,LocalDate.class)
要向用户显示
LocalDate
,请生成一个字符串以在用户界面中显示。使用
DateTimeFormatter
自动本地化。要本地化,请指定:

  • 确定字符串的长度或缩写
  • 确定(a)用于翻译日名、月名等的人类语言,以及(b)决定缩写、大写、标点符号、分隔符等问题的文化规范
例如:

Locale l = Locale.CANADA_FRENCH ; 
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( l );
String output = zdt.format( f );
您也可以使用另一个方向,输入字符串来获取日期

LocalDate ld = LocalDate.parse( input , f ) ;
如果用户输入错误或意外,则引发异常的陷阱

try{ 
    LocalDate ld = LocalDate.parse( input , f ) ;
    myPrepStmt.setObject( … , ld ) ;
} catch ( DateTimeParseException e ) {
    … // Handle the error condition of faulty/unexpected input by user.
}

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门为Android采用了ThreeTen Backport(如上所述)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可能会在这里找到一些有用的类,例如、、和。

是否希望在mysql日期列中插入
date
?尝试使用SimpleDataFormat请告诉我这是否对您有效!java.text.ParseException:不可解析日期:“”这是正确答案。假设txtToday.getText()返回用户输入的字符串,格式为“dd-MM-yyy”。显然,您返回的是空白。请提供调用和实现代码。@user3892439请明确您的要求,我假设txtdoway是一个文本框,用户在其中以dd-MM-yyyy格式输入日期,但该格式不起作用。我把它放在那里是为了让你们都知道我在做什么。我从一个Jtextfield中获取日期。如果你还没有日期对象,那么Sam Dunk的答案就是正确的。date date=txtdoady.getText();无法工作System.out.println(“Java的默认日期格式:“+Date”);这行打印日期了吗?