JAVA中的日期转换器

时间:2013-03-19 20:02:55

标签: java date

我的约会时间为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);

给出相同的日期。

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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 here的javadoc。希望有所帮助。

答案 2 :(得分: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));
}

答案 3 :(得分:1)

以这种方式使用SimpleDateFormat

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

答案 4 :(得分:0)

如果你进行任何计算或解析日期,请使用JodaTime,因为标准的JAVA日期支持确实是错误的