格式化日期 - 找不到符号
Formatting dates - can not find symbol
大家好,我有 class 接受带 date/time 值的输入字符串。我必须接受该输入并转换为不同的格式。这是示例:
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);
这是一个编译错误,请修复缺少的导入。
parse();
throws
一个 ParseException
(已检查的异常),必须明确处理:
try {
Date date=localDateFormat.parse(Dt);
} catch (ParseException ex) {
ex.printStackTrace(); //or log
}
你应该使用 DateTimeFormatter
s。首先创建一个格式化程序来解析您的文本:
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 为小写时才解析它们。 US Locale
仅以大写形式解析它们(它们在您的示例中)。
然后您可以创建一个格式化程序来打印您喜欢的文本:
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));
}
您当前输出格式的一个缺陷是您无法区分上午和下午。您可能应该使用 HH
(0 - 23) 而不是 h
(0 - 12).
大家好,我有 class 接受带 date/time 值的输入字符串。我必须接受该输入并转换为不同的格式。这是示例:
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);
这是一个编译错误,请修复缺少的导入。
parse();
throws
一个 ParseException
(已检查的异常),必须明确处理:
try {
Date date=localDateFormat.parse(Dt);
} catch (ParseException ex) {
ex.printStackTrace(); //or log
}
你应该使用 DateTimeFormatter
s。首先创建一个格式化程序来解析您的文本:
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 为小写时才解析它们。 US Locale
仅以大写形式解析它们(它们在您的示例中)。
然后您可以创建一个格式化程序来打印您喜欢的文本:
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));
}
您当前输出格式的一个缺陷是您无法区分上午和下午。您可能应该使用 HH
(0 - 23) 而不是 h
(0 - 12).