我有这种格式的日期 (2012-11-17T00:00:00.000-05:00)。我需要将日期转换成这种格式 mm/yyyy。
我尝试过这种方式,但我得到了这个异常。
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at DateParser.main(DateParser.java:14)
请看我下面的代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateParser {
public static void main(String args[]) {
String MonthYear = null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm/yyyy");
String dateformat = "2012-11-17T00:00:00.000-05:00";
MonthYear = simpleDateFormat.format(dateformat);
System.out.println(MonthYear);
}
}
最佳答案
DateFormat.format
仅适用于 Date
值。
您应该使用两个 SimpleDateFormat 对象:一个用于解析,一个用于格式化。例如:
// Note, MM is months, not mm
DateFormat outputFormat = new SimpleDateFormat("MM/yyyy", Locale.US);
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX", Locale.US);
String inputText = "2012-11-17T00:00:00.000-05:00";
Date date = inputFormat.parse(inputText);
String outputText = outputFormat.format(date);
编辑:请注意,您可能希望在格式中指定时区和/或语言环境,并且您应该也考虑使用 Joda Time而不是所有这些都开始 - 它是一个更好的日期/时间 API。
关于 java : Cannot format given Object as a Date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649782/