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 的LocalDateDateTimeFormatter 【参考方案1】:

mm分钟。你想要MM 几个月

SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy");

不要难过 - 这个错误经常出现。

【讨论】:

这确实出现了很多!【参考方案2】:

mmstands 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日期的日期转换给出不同的输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

R中从POSIXct到日期的日期转换

ios中从字符串到NSDate的日期转换

java和postgresql中从日期到长的转换是不一样的

Java中从LocalDateTime到joda DateTime的不正确日期转换

在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期

在 Swift 中从日期字符串转换日期