尝试转换格式时无法解析的日期

时间:2019-04-04 12:25:15

标签: java date simpledateformat

我目前正在从事一个项目,该项目要求我将日期从一种格式转换为另一种格式。

这是我的代码

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class testDate {

    static String date = "Wed Mar 27 18:14:25 CET 2019";                    // String representing received date
    static final String originalFormatS = "EEE MMM dd HH:mm:ss zzz yyyy";    // Corresponding date format
    static final String displayFormatS = "dd/MM/yy";                         // Wanted output format

    public static void main (String[] args) throws Exception {
        DateFormat originalFormat = new SimpleDateFormat(originalFormatS);
        DateFormat displayFormat = new SimpleDateFormat(displayFormatS);

        Date parsedDate = originalFormat.parse(date);
        String outputDate = displayFormat.format(parsedDate);

        System.out.println(outputDate);
    }

}

但是随后我得到 java.text.ParseException:无法解析的日期:“ CET 2019年3月27日星期三18:14:25”

我尝试了new Date(date);,但它已被弃用...

有什么想法吗? 预先感谢

3 个答案:

答案 0 :(得分:1)

您不在英国或美国,是吗?

SimpleDateFormat需要一个区域设置才能正确解释日期/月份名称。

只需像这样创建您的SimpleDateFormat

DateFormat originalFormat = new SimpleDateFormat(originalFormatS, Locale.US);

为我工作...

PS:像 Ben R。”所述:考虑将java.time用于任何基于日期/时间的数据处理。

答案 1 :(得分:1)

在创建SimpleDateFormat实例时,请指定您的语言环境。 例如,使以下构造函数正常工作

DateFormat originalFormat = new SimpleDateFormat(originalFormatS,Locale.US);

答案 2 :(得分:-1)

您可以尝试这个吗?

public class testDate {

static String date = "Wed Mar 27 18:14:25 CET 2019";                    // String representing received date
static final String originalFormatS = "EEE MMM dd HH:mm:ss zzz yyyy";    // Corresponding date format
static final String displayFormatS = "dd/MM/yy";                         // Wanted output format

public static void main (String[] args) throws Exception {
    Date originalFormat = new SimpleDateFormat(originalFormatS).parse(date);
    DateFormat displayFormat = new SimpleDateFormat(displayFormatS);

    String outputDate = displayFormat.format(originalFormat);

    System.out.println(outputDate);
}

}