Java中从字符串到sql日期的日期转换是否提供不同的输出?

Java中从字符串到sql日期的日期转换是否提供不同的输出?,java,date,type-conversion,Java,Date,Type Conversion,我有一个字符串形式的日期。我必须把它改成Sql日期。因此,我使用了以下代码 String startDate="01-02-2013"; SimpleDateFormat sdf1 = new SimpleDateFormat("dd-mm-yyyy"); java.util.Date date = sdf1.parse(startDate); java.sql.Date sqlStartDate = new java.sql.Date(date.getTime()); 当我使用上面的代码

我有一个字符串形式的日期。我必须把它改成Sql日期。因此,我使用了以下代码

String startDate="01-02-2013";
SimpleDateFormat sdf1 = new SimpleDateFormat("dd-mm-yyyy");
java.util.Date date = sdf1.parse(startDate);
java.sql.Date sqlStartDate = new java.sql.Date(date.getTime());  
当我使用上面的代码并运行它时。我得到了以下输出

2013-01-01.  
此处未正确转换月份。
请告诉我问题出在哪里,并提供示例代码以获得正确的结果?

mm
。改用
MM

SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy");
mm
是分钟。您想要
MM
持续数月:


别难过——这个错误经常出现。

这是将字符串转换为util-date和sql-date的简单方法

String startDate="12-31-2014";
SimpleDateFormat sdf1 = new SimpleDateFormat("MM-dd-yyyy");
java.util.Date date = sdf1.parse(startDate);
java.sql.Date sqlStartDate = new java.sql.Date(date.getTime()); 

在使用日期格式时,您可能需要记住,始终使用
MM
表示月份,使用
MM
表示分钟。这应该可以解决您的问题。

您需要使用
MM
,因为
MM
代表分钟

有两种方法可以生成模式

SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy"); //outputs month in numeric way, 2013-02-01

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy"); // Outputs months as follows, 2013-Feb-01
完整编码片段:

        String startDate="01-Feb-2013"; // Input String
        SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy"); // New Pattern
        java.util.Date date = sdf1.parse(startDate); // Returns a Date format object with the pattern
        java.sql.Date sqlStartDate = new java.sql.Date(date.getTime());
        System.out.println(sqlStartDate); // Outputs : 2013-02-01

对代码的一些注释会很有用。这确实会出现很多问题!我建议您不要使用
SimpleDateFormat
和两个
Date
类。这些类设计得很糟糕,而且早已过时,第一个类尤其令人讨厌。而是使用
LocalDate
DateTimeFormatter
,两者都来自。
        String startDate="01-Feb-2013"; // Input String
        SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy"); // New Pattern
        java.util.Date date = sdf1.parse(startDate); // Returns a Date format object with the pattern
        java.sql.Date sqlStartDate = new java.sql.Date(date.getTime());
        System.out.println(sqlStartDate); // Outputs : 2013-02-01