使用 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