如何解析像 '2012-08-22 11:55:38 这样的日期
到“8 月 8 日”
我尝试使用 formateador = new SimpleDateFormat("d MMM");
但我得到一个“无法解析的日期”异常。
希望您能够帮助我。谢谢
如何解析像 '2012-08-22 11:55:38 这样的日期
到“8 月 8 日”
我尝试使用 formateador = new SimpleDateFormat("d MMM");
但我得到一个“无法解析的日期”异常。
希望您能够帮助我。谢谢
你从一个字符串解析为一个Date
. 然后,您可以使用不同的模式将 a格式化为字符串。Date
目前,鉴于您向我们展示的代码,您似乎正在尝试解析值“2012-08-22 11:55:38”,并SimpleDateFormat
期待模式“d MMM”,但显然没有遵守。你应该有类似的东西:
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
Locale.US);
// TODO: Set the time zone appropriately
Date date = inputFormat.parse(inputText);
SimpleDateFormat outputFormat = new SimpleDateFormat("d MMM", targetLocale);
// TODO: Set the time zone appropriately
String outputText = outputFormat.format(date);
请注意,如果您在 Java 中做大量的日期/时间工作,您应该查看Joda Time,这是一个更好的日期/时间 API。
这应该有效(如果我明白你在问什么):
String s = "2012-08-22 11:55:38";
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date dt = fmt.parse(s);
DateFormat output = new SimpleDateFormat("d 'of' MMMM", Locale.US);
System.out.println(output.format(dt)); //prints 22 of August
从输入字符串解析日期时遇到问题。
"2012-08-22 11:55:38" 采用 "yyyy-MM-dd HH:mm:ss" 格式,您应该首先使用它从输入字符串中解析日期。
然后,一旦有了Date
对象,就可以将日期格式化为所需的格式。
如果我的问题正确,您尝试将第一个字符串解析为日期,然后将结果日期格式化为秒字符串。如果这是真的,那么请看下面的代码:
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat f2 = new SimpleDateFormat("dd 'of' MMMM");
try {
java.util.Date date = f1.parse("2012-08-22 11:55:38");
System.out.println(f2.format(date));
} catch (ParseException ex) {
ex.printStackTrace();
}