在数据库中插入日期时,我会遇到一些奇怪的行为。
数据库使用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
,使其完全没有任何意义。
另一个后续问题:我的程序将不得不处理所有可能格式的日期,我可以获得最有可能插入日期的用户的区域设置。我将如何继续这样做?
问候。
答案 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 :(得分:0)
如果要与数据库日期交互,请使用java.sql.Date。 检查你的日期格式
最佳选择是使用时间戳而不是日期。存放时间(timeinmillis)。