在数据库中插入日期时Java奇怪的行为

时间:2013-07-16 10:01:11

标签: java sql date

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

数据库使用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,使其完全没有任何意义。

另一个后续问题:我的程序将不得不处理所有可能格式的日期,我可以获得最有可能插入日期的用户的区域设置。我将如何继续这样做?

问候。

3 个答案:

答案 0 :(得分:5)

年份由小型大写y表示,而不是Y

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

Y(大额上限)是一周。

答案 1 :(得分:0)

如果您要以19-9-2011格式发送输入字符串格式应为dd-MM-yyyy和 传递09而不是9

的2位数字

答案 2 :(得分:0)

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

最佳选择是使用时间戳而不是日期。存放时间(timeinmillis)。