【问题标题】:Java weird behaviour on inserting date in databaseJava在数据库中插入日期的奇怪行为
【发布时间】:2013-07-16 10:01:10
【问题描述】:

在向数据库中插入日期时,我遇到了一些奇怪的行为。

数据库使用date 字段,我的输入在String,因此我将其转换为java.util.Date,然后插入。

转换代码:

private Date convertToDate(String input) {
    try {
        return new SimpleDateFormat("dd-MM-YY", Locale.ENGLISH).parse(input);
    } catch (ParseException ex) {
        Logger.getLogger(OutputProcessor.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}

当input = "19-9-2011" 时,它会将2010-12-26 插入到数据库中。此外,当我错误地将语言环境设置为法语时,它插入了2011-01-03,以使其根本没有任何意义。

还有一个后续问题:我的程序必须处理所有可能格式的日期,但我可以获得最有可能插入日期的用户的语言环境。我将如何继续这样做?

问候。

【问题讨论】:

    标签: java sql date


    【解决方案1】:

    年份用小写字母y 表示,而不是Y:

    return new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH).parse(input);
    

    Y(大写字母)是周年。

    【讨论】:

      【解决方案2】:

      如果您将输入字符串作为19-9-2011 发送,格式应为dd-MM-yyyy 和 传递 2 个月份的数字 09 而不是 9

      【讨论】:

        【解决方案3】:

        如果您要与数据库日期交互,请使用 java.sql.Date。 检查您的日期格式

        最好的选择是使用时间戳而不是日期。尽可能长时间地存储 (timeinmillis)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-08
          • 1970-01-01
          • 2018-11-17
          • 1970-01-01
          • 1970-01-01
          • 2015-02-21
          • 1970-01-01
          • 2013-09-02
          相关资源
          最近更新 更多