使用具有长值的java.sql.Date构造函数

使用具有长值的java.sql.Date构造函数,java,sql,date,Java,Sql,Date,不推荐使用的java.sql.Date构造函数更加直观-Date(int-year,int-month,int-day)。但是现在我们需要使用新的java.sql.Date(长日期) 我在文档中找不到如何自己写一个实际的长日期。除了使用java.util.date() 日期(年、月、日)被弃用的原因是它不受语言环境的影响。如果只想使用标准java类,标准方法是使用Calendar.getInstance,然后使用生成的日历的.set方法设置年、月和日。然而,正如我在3年的StackOverflo

不推荐使用的
java.sql.Date
构造函数更加直观-
Date(int-year,int-month,int-day)
。但是现在我们需要使用新的java.sql.Date(长日期)


我在文档中找不到如何自己写一个实际的长日期。除了使用
java.util.date()

日期(年、月、日)被弃用的原因是它不受语言环境的影响。如果只想使用标准java类,标准方法是使用Calendar.getInstance,然后使用生成的日历的.set方法设置年、月和日。然而,正如我在3年的StackOverflow中所学到的,更好的方法是使用。

我认为jdk替代(年、月、日)构造函数将使用Calendar类,这有点麻烦,因为您必须独立设置字段


但是,正如Paul提到的,如果可以将jar添加到项目中,那么使用Joda Time是一个很好的选择。

这里有一种快速简便的方法,可以从年、月和日创建java.sql.Date。它格式化日期字符串并使用date.valueOf(字符串)


Jon Skeet应该提到Joda Time了,对吧?另一种方法是使用DateFormat将字符串解析为日期,然后调用getTime()。好的,我已经下载了Joda Time的jar。通过查找一些关于Joda time和sql的指南,比如这里,我了解了如何使用构造函数。但是链接中的示例只提供了从JodaTime到时间戳的转换。如果我想将JodaTime转换为java.sql.Date,以便通过java类将其插入数据库,该怎么办?
/** 
* Create a java.sql.Date from from year, month, and day of the month.
*/
private java.sql.Date createSqlDate(int year, int month, int day) {

    // Create a date string with leading zeros for month and day.
    String dateString = String.format("%d-%02d-%02d", year, month, day);

    return java.sql.Date.valueOf(dateString);
}