Java中的问题转换日期格式 [英] Problem converting date format in Java

查看:174
本文介绍了Java中的问题转换日期格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个字符串,形式为MMM / dd / yyyy,即。 2010年5月/ 21日。
现在我想把它转换成yyyyMMdd,ie。 20100521。



我的代码是:

  public static void main String [] args){
ArrayList< String> dates = new ArrayList< String>();
dates.add(2011年1月/ 13日);
dates.add(Feb / 03/2001);
dates.add(2012年3月/ 19日);
dates.add(2011年4月/ 20日);
dates.add(2010年5月/ 21日);
dates.add(2008年6月23日);
dates.add(Jul / 12/2009);
dates.add(2010年8月/ 14日);
dates.add(2011年9月/ 01);
dates.add(Oct / 07/2010);
dates.add(2011年11月5日);
dates.add(Dec / 30/2011);

(String s:dates){
System.out.println(transformPrevDate(s));
}
}

转换方法:

  public String transformPrevDate(String datoe){
String [] splitter = datoe.split(/);
String m = splitter [0] .toUpperCase();
String d = splitter [1];
String y = splitter [2];

DateFormat formatter = new SimpleDateFormat(MMM);
DateFormat formatter2 = new SimpleDateFormat(MM);

try {
Date date = formatter.parse(m);
m = formatter2.format(date);
} catch(ParseException e){
e.printStackTrace();
}

String date = y + m + d;

返回日期;
}

问题是我在5月和10月收到一个不可抛出的日期异常。我来自丹麦,如果我把它改成丹麦语Maj和Okt,那么它成功了。那么我在这里做错了什么?

解决方案

使用 SimpleDateFormat(String pattern,Locale locale) Locale 添加到您的日期解析中(对于英文,使用 Locale.ENGLISH

更好的解决方案:

  public String transformPrevDate(String datoe){
SimpleDateFormat dateFormat = new SimpleDateFormat(MMM / dd / yyyy,Locale.ENGLISH);
SimpleDateFormat dateFormat2 = new SimpleDateFormat(yyyyMMdd);

try {
return dateFormat2.format(dateFormat.parse(datoe));
} catch(ParseException e){
// TODO自动生成的catch块
e.printStackTrace();
}
}


I have a string in the form MMM/dd/yyyy, ie. May/21/2010. Now I want to convert it to yyyyMMdd, ie. 20100521.

My code is:

public static void main(String[] args) {        
        ArrayList<String> dates = new ArrayList<String>();
        dates.add("Jan/13/2011");
        dates.add("Feb/03/2001");
        dates.add("Mar/19/2012");
        dates.add("Apr/20/2011");
        dates.add("May/21/2010");
        dates.add("Jun/23/2008");
        dates.add("Jul/12/2009");
        dates.add("Aug/14/2010");
        dates.add("Sep/01/2011");
        dates.add("Oct/07/2010");
        dates.add("Nov/05/2011");
        dates.add("Dec/30/2011");

        for(String s : dates) {
            System.out.println(transformPrevDate(s));
        }
    }

And the method to transform:

public String transformPrevDate(String datoe) {
        String[] splitter = datoe.split("/");
        String m = splitter[0].toUpperCase();
        String d = splitter[1];
        String y = splitter[2];

        DateFormat formatter = new SimpleDateFormat("MMM");
        DateFormat formatter2 = new SimpleDateFormat("MM");

        try {
            Date date = formatter.parse(m);
            m = formatter2.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        String date = y + m + d;

        return date;
    }

The problem is that I get an Unparseable date exception, on May and Oct. I'm from Denmark and if I change it to danish "Maj" and "Okt" it succeeds. So what am I doing wrong here?

解决方案

Use SimpleDateFormat(String pattern, Locale locale) to add Locale to your date parsing (for english, use Locale.ENGLISH).

Better solution:

public String transformPrevDate(String datoe) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("MMM/dd/yyyy", Locale.ENGLISH);
    SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyyMMdd");

    try {
        return dateFormat2.format(dateFormat.parse(datoe));
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

这篇关于Java中的问题转换日期格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆