java - 如何防止12 :00:00 from becoming 00:00:00?

标签 java sql date

我有一个表单,用户输入广告开始时间和广告结束时间,该时间的格式为“yyyy/mm/dd hh:mm:ss”,然后将此数据推送到数据库。

但是当用户输入“yyyy/mm/dd 12:00:00”或基本上任何 12 时,当我使用 24 时它不起作用,当我输入 12 时数据库显示 00:00:00。我该怎么办防止这种情况发生?

 SplashPageValue value = new SplashPageValue();
 SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");

 value.adStartDate = df.parse(fileUp.getString("adStartDate"));    
 value.adEndDate = df.parse(fileUp.getString("adEndDate"));

截图如下:

表格

the form

我使用 SQuirreL 在数据库中看到的内容

pic

最佳答案

你的问题不清楚,但我强烈怀疑问题在于你正在使用 12 小时时钟进行解析。更改格式字符串以使用 HH 而不是 hh,这很可能会解决问题:

SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

请注意,您还应该考虑在解析时要使用哪个时区。我个人更喜欢使用 Joda Time适用于 Java 中的所有日期和时间操作 - 包括解析/格式化,因为与 Joda Time 的解析器不同,SimpleDateFormat 不是线程安全的。

关于java - 如何防止12 :00:00 from becoming 00:00:00?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932050/

相关文章:

java - 如何在 Azure 应用服务上进行线程转储?

sql - 如何计算具有最小值的列的日期差异

c# - 我怎样才能得到一个数据库表的总和到一个变量?

javascript - 如何检查字符串是否为合法的 "dd/mm/yyyy"日期?

Django 日期过滤器在模板中不起作用

java - SimpleDateFormat 返回带有无效日期字符串的奇怪日期

java - TDD 和工厂模式

java - 如何打印 mahout lda cvb 主题

javascript - 如何在 Sequelize 模型上实现 'replyingTo' 和 'replies' 关联

Java JtextArea 多个字母