我想避免 重新安装日食以解决这个问题, ,所以我希望有人可以帮助解决这个日期问题。这就是我要做的。

DateFormat dateFormat; 

这是我班级的变量。我将其设置为以下内容。

dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// Example input: 2010-11-07 16:00:00

当调用另一种方法时,我使用传递的字符串创建一个新的java.sql.date实例。为了清楚起见,这是一个缩短版本。

public void aMethod (String activateTime, String expireTime) {
    Date example = new Date(dateFormat.parse(activateTime).getTime());
    Date example2 = new Date(dateFormat.parse(expireTime).getTime());
}

当我查看由这些操作产生的字符串(仅将.tostring()添加到上面的实例化)时,我会像以下输出一样输出

2010-10-30
2010-11-29

...而不是据报道是...的输入字符串

2010-10-30 17:00:00
2010-11-29 16:00:00

有人知道为什么它不给我一个我指定的模式的日期吗?

有帮助吗?

解决方案

Javadocs java.sql.Date 指定ToString方法返回格式“ Yyyy-MM-DD”的字符串,因此您可以看到正确的行为。这 Date 对象不知道您用来创建它的格式。要以相同格式获得输出 DateFormat.format 方法而不是 toString:

public void aMethod (String activateTime, String expireTime) {
    Date example = new Date(dateFormat.parse(activateTime).getTime());
    Date example2 = new Date(dateFormat.parse(expireTime).getTime());
    System.out.println(example.toString() + " vs " + dateFormat.format(example));
    System.out.println(example2.toString() + " vs " + dateFormat.format(example2));
}

其他提示

java.sql.Date 仅包含DateTime的日期部分。您可能想使用 java.sql.Timestamp 反而。

Timestamp example = new Timestamp(dateFormat.parse(activateTime).getTime());
Timestamp example2 = new Timestamp(dateFormat.parse(expireTime).getTime());

它也可以在平均SQL数据库中工作。这 DATE 数据类型仅表示日期 TIME 数据类型仅表示时间。这 TIMESTAMP 数据类型(有时称为 DATETIME)代表日期和时间。

请注意,您的小时模式不正确。在给定的示例中,您宁愿使用 HH 代替 hh. 。另请参阅 SimpleDateFormat Javadoc.

也可以看看:

您是否尝试将java.sql.date更改为java.util.date?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top