Java中从字符串到sql日期的日期转换给出不同的输出? [复制]
Posted
技术标签:
【中文标题】Java中从字符串到sql日期的日期转换给出不同的输出? [复制]【英文标题】:Date Conversion from String to sql Date in Java giving different output? [duplicate] 【发布时间】:2012-05-11 21:41:33 【问题描述】:我有一个字符串形式的日期。我必须将其更改为 Sql Date。所以为此我使用了以下代码。
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.
此处月份未正确转换。 请告诉我问题出在哪里并提供示例代码以获得正确的结果?
【问题讨论】:
我建议你不要使用SimpleDateFormat
和两个 Date
类。这些类设计不佳且过时已久,尤其是第一个类是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate
和DateTimeFormatter
。
【参考方案1】:
mm
是 分钟。你想要MM
几个月:
SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy");
不要难过 - 这个错误经常出现。
【讨论】:
这确实出现了很多!【参考方案2】:mm
stands for "minutes"。请改用MM
:
SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy");
【讨论】:
【参考方案3】:您需要使用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
全编码sn-p:
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
【讨论】:
【参考方案4】:这就是将string转换为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());
【讨论】:
对代码进行一些注释会很有用。【参考方案5】:在使用日期格式时,您可能需要记住始终使用 MM
表示月份,使用 mm
表示分钟。这应该可以解决您的问题。
【讨论】:
以上是关于Java中从字符串到sql日期的日期转换给出不同的输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Java中从LocalDateTime到joda DateTime的不正确日期转换