我需要从以下日期格式获取月份短名称和日期。
鉴于日期格式为: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();
}
}
答案 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);