如何使用java和flex格式化时间?

如何使用java和flex格式化时间?,java,apache-flex,Java,Apache Flex,我正在使用flex StringSat Aug 4 13:10:00 GMT+0530 2012,所以在我的Java程序中,我像这样转换 try { String str_date = "Sat Aug 4 13:10:00 GMT+0530 2012"; DateFormat formatter = new SimpleDateFormat( "EEE MMM dd HH:mm:ss zzzz yyyy"); Date date = (Date

我正在使用flex String
Sat Aug 4 13:10:00 GMT+0530 2012
,所以在我的Java程序中,我像这样转换

try {
    String str_date = "Sat Aug 4 13:10:00 GMT+0530 2012";

    DateFormat formatter = new SimpleDateFormat(
            "EEE MMM dd HH:mm:ss zzzz yyyy");
    Date date = (Date) formatter.parse(str_date);
    System.out.println(date);
} catch (ParseException e) {
    System.out.println("Exception :" + e);
}
但它给

`Exception :java.text.ParseException: Unparseable date: "Sat Aug 4 13:10:00 GMT+0530 2012"`
此格式化程序工作:

DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");

@Florent的答案是好的,但是自从写了这个之后,Java获得了新的日期/时间包。这是在Java 8及更高版本中实现此功能的一种方法:

import java.time.format.DateTimeFormatter;
import java.time.LocalDateTime;

// ...

String input = "Sat Aug 4 13:10:00 GMT+0530 2012";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
LocalDateTime dateTime = LocalDateTime.parse(input, formatter);

然后,
dateTime
对象可以用于日期/时间计算,或者使用另一个格式化程序呈现为字符串,或者您需要执行的任何操作。

为什么不发送一个时间戳?如果我们这样传递它是正确的:Sat Aug 4 13:10:00 GMT+05:30 2012,但字符串是:Sat Aug 4 13:10:00 GMT+0530 2012回答正确。您需要一个
d
表示一个月中的一位数天,并且应该提供一个讲英语的区域设置,例如
DateTimeFormatter.of模式(“EEE-MMM-d-HH:mm:ss'GMT'Z-yyyy”,locale.English)
。既然字符串有一个偏移量,为什么不解析成一个
OffsetDateTime