-3

我有日期Tue Mar 19 00:41:00 GMT 2013,如何将其转换为2013-03-19 06:13:00

final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final Date date = bdate; 
Date ndate = formatter.parse(formatter.format(date)); 
System.out.println(ndate);

给出相同的日期。

4

5 回答 5

4

使用两个具有适当格式的 SimpleDateFormat 对象,并使用第一个将字符串解析为日期,第二个将日期再次格式化为字符串。

于 2013-03-19T20:04:21.010 回答
2

正如第一个答案所说。首先使用 SimpleDateFormat 解析您的日期,如下所示:

Date from = new SimpleDateFormat("E M d hh:mm:ss z yyyy").parse("Tue Mar 19 00:41:00 GMT 2013");

然后使用它来使用 SimpleDateFormat 的另一个实例格式化生成的日期对象,如下所示:

String to = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(from);

在此处查看 SimpleDateFormat 的 javadoc 。希望有帮助。

于 2013-03-19T20:13:53.847 回答
2

其他人遗漏的一件主要事情是处理时区(TZ)。每当您使用 SimpleDateFormat 来往/从日期的字符串表示时,您确实需要了解您正在处理的 TZ。除非您在 SimpleDateFormat 上明确设置 TZ,否则它将在格式化/解析时使用默认TZ。除非您只处理默认时区中的日期字符串,否则您会遇到问题。

您输入的日期代表 GMT 日期。假设您还希望将输出格式化为 GMT,您需要确保在 SimpleDateFormat 上设置 TZ:

public static void main(String[] args) throws Exception
{
    String inputDate = "Tue Mar 19 00:41:00 GMT 2013";
    // Initialize with format of input
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    // Configure the TZ on the date formatter. Not sure why it doesn't get set
    // automatically when parsing the date since the input includes the TZ name,
    // but it doesn't. One of many reasons to use Joda instead
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date date = sdf.parse(inputDate);
    // re-initialize the pattern with format of desired output. Alternatively,
    // you could use a new SimpleDateFormat instance as long as you set the TZ
    // correctly
    sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
    System.out.println(sdf.format(date));
}
于 2013-03-19T20:56:21.520 回答
1

以这种方式使用SimpleDateFormat :

final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final Date date = new Date();
System.out.println(formatter.format(date));
于 2013-03-19T20:10:25.377 回答
0

如果您使用日期进行任何计算或解析,请使用 JodaTime,因为标准的 JAVA 日期支持确实有问题

于 2013-03-19T20:13:05.083 回答