格式化日期 - 找不到符号



大家好,我的课程采用带有日期/时间值的输入字符串。我必须接受该输入并以不同的格式进行转换。下面是示例:

class Format{
public String solution(String Dt) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
String fr = df.format(Dt);
return fr;
}
}

输入 Dt 如下所示:

March 16, 20018 7:56 AM

我从上面的代码中收到错误:

Format.java:13: error: cannot find symbol
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
^
symbol:   class DateFormat

如果有人知道如何格式化我的输入日期字符串,请告诉我。谢谢。

我已经尝试过这个,但仍然抛出错误:

SimpleDateFormat localDateFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm");
Date date=localDateFormat.parse(Dt);

错误:

Format.java:10: error: unreported exception ParseException; must be caught or declared to be thrown
Date date=localDateFormat.parse(Dt);

你应该使用DateTimeFormatters。首先创建一个格式化程序以在文本中解析:

final DateTimeFormatter in = new DateTimeFormatterBuilder()
.appendPattern("MMMM dd, yyyy K:mm a")
.toFormatter(Locale.US);

MMMM是文本月份
dd是月份
中的某天yyyy是年份
K是 AM/PM 的小时(1 或 2 位数字(,
mm是小时
中的分钟a是 AM/PM

我需要美国Locale,因为我的默认Locale是英国,它仅在小写时才解析 AM/PM。USLocale仅以大写形式解析它们(在您的示例中是大写(。

然后,您可以创建一个格式化程序来打印出您喜欢的文本:

final DateTimeFormatter out = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm");

最终代码:

public String solution(String Dt) {
final DateTimeFormatter in = new DateTimeFormatterBuilder()
.appendPattern("MMMM dd, yyyy K:mm a")
.toFormatter(Locale.US);
final DateTimeFormatter out = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm");
return out.format(in.parse(Dt));
}

当前输出格式的一个缺陷是您无法区分 AM 和 PM。您可能应该使用HH(0 - 23( 而不是h(0 - 12(。

这是一个编译错误,修复缺少的导入。 该parse();throwsParseException(已检查异常(,必须显式处理:

try {
Date date=localDateFormat.parse(Dt);
} catch (ParseException ex) {
ex.printStackTrace(); //or log
}

最新更新