java - 格式化日期 - 找不到符号

标签 java java-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);

最佳答案

您应该使用DateTimeFormatter。首先创建一个格式化程序来解析您的文本:

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

我需要美国区域设置,因为我的默认区域设置是英国,它仅解析小写的 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));
}

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

关于java - 格式化日期 - 找不到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724480/

相关文章:

java - 当一个对象都继承自同一个类时,如何以一种简单的方式将它们转换为另一个对象

java - 使用随机类的首选方式

java - 如何从给定的 Instant 获取第二天结束的日期时间? ( java )

java - 为什么我的日期时间解析尝试失败?

java - 在 JavaFX 的 DatePicker 中设置一周的第一天

java - 不能从最终类继承

java - 为什么java中的集合有int索引?

java-8 - 如何让我的小时、分钟、秒和毫秒为零?

java-8 - Java 8 DateTimeFormatter 两位数的年份 18 解析为 0018 而不是 2018?

java - PIVOTAL GPDB - 外部表 gphdfs 协议(protocol)命令以错误结束。 sh : java: command not found