将缩短的月份名称转换为较长的月份名称

时间:2014-04-02 02:59:35

标签: java

我需要将月份名称的缩短版本转换为更长的代表(例如" Dec" - >" 12月")。月份名称是一个字符串,我宁愿不首先将其转换为日期对象。

有一种简单的方法吗?

编辑: 我的问题与插入" Dec"作为mysql中的表名(当然会引发语法错误),对于我的用例,更改这个值比让mysql命令改变它更好。

4 个答案:

答案 0 :(得分:3)

显而易见的方法是:

if (month.equalsIgnoreCase("Jan"))
    month = "January";
else if (month.equalsIgnoreCase("Feb"))
    month = "February";
// and so on...

如果您愿意,也可以用switch表示:

switch (month.toLowerCase()) {
case "jan": month = "January"; break;
case "feb": month = "February"; break;
// and so on...
}

或者,更宽容的版本:

if (month.toLowerCase().startsWith("Jan"))
    month = "January";
// and so on...

我想你可以先将它们存储在地图中:

Map<String,String> monthNames = new HashMap<String,String>();
monthNames.put("jan", "January");
monthNames.put("feb", "February");
// and so on...

String shortMonth = "Jan";
String month = monthNames.get(shortMonth.toLowerCase());
if (month == null)
    month = shortMonth;

我想,使用地图可以轻松地将翻译添加到其他语言。您还可以使用Russell Zahniser's很好的答案自动使用当前区域设置。

似乎没有太多理由将它们解析为日期和返回(尽管如果你这样做,请参阅newuser's answer)。

有很多方法可以做到这一点。

答案 1 :(得分:2)

试试这个,使用此格式获取完整值 MMMM

       String month = "Dec";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM");
        try
        {
            Date date = simpleDateFormat.parse(month);
            simpleDateFormat = new SimpleDateFormat("MMMM");
            System.out.println(simpleDateFormat.format(date));
        }
        catch (ParseException ex)
        {
            System.out.println("Exception "+ex);
        }

答案 2 :(得分:2)

使用为用户的区域设置配置的月份名称来执行此操作:

// Set up a lookup table like this:

Map<String,String> shortToLong = new HashMap<String,String>();
DateFormatSymbols symbols = new DateFormatSymbols();

for(int i = 0; i < symbols.getMonths().length; i++) {
   shortToLong.put(symbols.getShortMonths()[i], symbols.getMonths()[i]);
}

// Then use like this:

String longMonth = shortToLong.get(shortMonth);

答案 3 :(得分:2)

另一种方法是从长月名开始,然后缩写每个名称,看看哪一个与给定的输入匹配。

String s="MAR";
String months[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
for(String i : months) {
    if(i.substring(0,3).equalsIgnoreCase(s)) {
        System.out.println(i);
        break;
    }
}