0

//我是java编程新手

我有一个字符串对象,它以这种格式表示日期/时间:“2013-06-09 14:20:00”(yyyy-MM-dd HH:mm:ss)

我想将它转换为 Date 对象,以便我可以对其执行计算,但我对如何执行此操作感到困惑。

我试过了 :

String string = "2013-06-09 14:20:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(string);
System.out.println(date);
//Prints Mon Dec 31 00:00:00 GMT 2012

任何帮助表示赞赏

好的,所以我现在已经将我的代码更新为如下,当我打印日期时,我现在得到了正确的日期/时间,但这是正确的实现:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String string = "2013-06-09 14:20:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(string);
System.out.println(dateFormat.format(date));
//prints 2013-06-09 14:20:00

感谢迄今为止回答/评论的每个人

4

3 回答 3

3

格式不对。改用这个:

“yyyy-dd-MM HH:mm:ss”

实际上,您的最后一个程序版本是可以的,除了您不需要声明SimpleDateFormat两次。简单地:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = "2013-06-09 14:20:00";
Date date = dateFormat.parse(string);
System.out.println(dateFormat.format(date));
于 2013-06-08T11:17:49.643 回答
0

String string = "2013-06-09 14:20:00";

DATE 对象格式为“yyyy-dd-MM HH:mm:ss”

您可以使用存在于

java.util.Date包,如下所示。

日期 d = 新日期(字符串);

这将调用 Date 对象的构造函数,您将为其传递包含日期的“字符串”变量。

d.getDay(); // 检索特定日期的日期

d.getDate(); // 检索日期

还有更多像这样可用。

于 2013-06-08T13:52:48.370 回答
0

使用 java.util.Date

zzKozak的回答是正确的。嗯,几乎是正确的。示例代码省略了所需的异常处理。像这样……</p>

java.text.DateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = "2013-06-09 14:20:00";
Date date = null;
try {
    date = dateFormat.parse(string);
} catch ( ParseException e ) {
    e.printStackTrace();
}
System.out.println("date: " + dateFormat.format(date));

不要使用 java.util.Date!

避免使用与 Java 捆绑在一起的 java.util.Date 和 Calendar 类。它们在设计和实现方面都是出了名的糟糕。

而是使用合格的日期时间库。在 Java 中,这意味着:

时区

您的问题和代码无法解决时区问题。如果您忽略时区,您将获得默认值。在生产中部署时,这可能会导致意外行为。更好的做法是始终指定时区。

格式化程序

如果按照标准ISO 8601格式将空格替换为“T” ,则可以方便地将该字符串直接提供给 Joda-Time DateTime实例的构造函数。

如果您必须按原样使用该字符串,则定义一个格式化程序来指定该格式。你可以在 StackOverflow.com 上找到很多这样的例子。

示例代码

下面是一些使用 Joda-Time 2.3 的示例代码,在 Java 7 中运行。

我随意选择了蒙特利尔的时区

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

// Specify a time zone rather than rely on default.
// Necessary to handle Daylight Saving Time (DST) and other anomalies.
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" );

DateTime dateTime = new DateTime( "2013-06-09T14:20:00", timeZone ); // Or pass DateTimeZone.UTC as time zone for UTC/GMT.

System.out.println( "dateTime: " + dateTime );

运行时……</p>

dateTime: 2013-06-09T14:20:00.000-04:00
于 2013-12-30T00:27:01.720 回答