用simpledateformat格式化日期

bzzcjhmw  于 2021-07-09  发布在  Java
关注(0)|答案(4)|浏览(303)

我如何解析像“2012-08-22 11:55:38”这样的日期
到8月8日
我尝试了formateador=newsimpledateformat(“d mmm”);
但我得到了一个“无法接受的约会”例外。
希望你能帮助我。谢谢

ac1kyiln

ac1kyiln1#

如果我答对了您的问题,您可以尝试将第一个字符串解析为日期,然后将结果日期格式化为秒字符串。如果这是真的,请参见下面的代码:

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(); 
}
p8ekf7hl

p8ekf7hl2#

从输入字符串解析日期时出现问题。
“2012-08-22 11:55:38”采用“yyyy-mm-dd hh:mm:ss”格式,您应首先使用该格式从输入字符串解析日期。
一旦你有了 Date 对象,则可以按所需格式设置日期的格式。

gdx19jrr

gdx19jrr3#

将字符串解析为 Date . 然后可以从 Date 使用不同的模式创建字符串。目前,根据您向我们展示的代码,您似乎正在尝试使用 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。

ars1skjm

ars1skjm4#

这应该有效(如果我理解你的要求):

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

相关问题