如何把日期转换成不同的格式?

如何把日期转换成不同的格式?

问题描述:

我从 api 服务器中获取一些数据,包含数据和数据格式2013-09-06T14:15:11.557
这是什么格式呢?如何把这个数据格式转换为2013 sept 06 2:15
我使用下面2中方法来转换日期格式

public static Date stringToDate(String dateString)
    {
        Date date = null;
        DateFormat df = new SimpleDateFormat(Constants.DATE_FORMAT_WITHOUT_TIME);
        try {
            date = df.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

public static String FormatDate(String dateString)
    {
        String s="";
        Date date = stringToDate(dateString);
        s = date.getDate()+" "+monthname[date.getMonth()+1]+" "+(date.getYear()+1900);
        return s;
        }

这是我的数据格式常量public static final String DATE_FORMAT_WITHOUT_TIME = "yyyy-MM-dd";,但是解析的不正确。

你可以试一下下面的代码:

 String date="2013-09-06T14:15:11.557";
    DateFormat df=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
    Date d=df.parse(date);
    df=new SimpleDateFormat("yyyy-MMM-dd hh:mm");
    System.out.println(df.format(d));

输出:

2013-Sep-06 02:15

date = df.parse(dateString);
这有问题

你确信是sept,不是Sep,那样就简单多了。

下面是sept的代码。

    String fromFormat = "yyyy-MM-dd'T'hh:mm:ss.S";
    String toFormat = "yyyy '%s' dd h:m";
    String monthFormat = "MMMM";

    SimpleDateFormat sdf = new SimpleDateFormat(fromFormat);
    Date d = sdf.parse("2013-09-06T14:15:11.557");

    sdf = new SimpleDateFormat(toFormat);
    String s = sdf.format(d);
    String m = new SimpleDateFormat(monthFormat, Locale.ENGLISH).format(d);
    s = String.format(s, m.substring(0, 4).toLowerCase());

    System.out.println(s);