Java中从字符串到sql日期的日期转换是否提供不同的输出?
我有一个字符串形式的日期。我必须把它改成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()); 当我使用上面的代码
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