Java从日期获取月份排序名称

时间:2015-03-13 10:30:04

标签: java

我需要从以下日期格式获取月份短名称和日期。

鉴于日期格式为:2015-12-01 00:00:00,我的输出日期格式为Dec, 01。但我的代码总是返回Jan, 01。请告诉我我的代码在哪里错了。

    String newdate = "";
    String ip = "2015-10-01 00:00:00";
    try {
        String old_format = "yyyy-mm-dd HH:mm:ss";
        String new_format = "MMM, dd";
        SimpleDateFormat sdf = new SimpleDateFormat(old_format);
        Date d = sdf.parse(ip);
        SimpleDateFormat sm = new SimpleDateFormat(new_format);
        newdate = sm.format(d);
        System.out.println(newdate);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:4)

要获得预期结果,您应使用以下格式:

String old_format = "yyyy-MM-dd HH:mm:ss";

MM而不是mm才能获得一年中的两位数月份

请查看http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

上的表格
  
    

M - >一年一个月

         

m - >一小时分钟

  

答案 1 :(得分:1)

old_format应为:

String old_format = "yyyy-MM-dd HH:mm:ss"; //mm -> MM

而不是做

SimpleDateFormat sm = new SimpleDateFormat(new_format);

您还可以使用applyPattern()方法更改SimpleDataFormat的模式:

sdf.applyPattern(new_format);
newdate = sdf.format(d);

因此您不必创建另一个SimpleDataFormat对象。

答案 2 :(得分:1)

正如对方所说,使用:

String old_format = "yyyy-MM-dd HH:mm:ss"; //mm -> MM

如果您正在使用Java SE 8或更高版本(推荐),请尝试使用java.time类。请参阅Oracle Tutorial

DateTimeFormatter oldFormatter = DateTimeFormatter.ofPattern(old_format);
DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern(new_format);
LocalDateTime dateTime = LocalDateTime.parse(ip, oldFormatter);
String newdate = dateTime.format(newFormatter);
// and later optionally
MonthDay monthDay = MonthDay.parse(newdate, newFormatter);