【问题标题】:Displaying HH:MM with SimpleDateFormat使用 SimpleDateFormat 显示 HH:MM
【发布时间】:2013-11-20 21:59:24
【问题描述】:

我在尝试格式化我创建的时间字符串时遇到了一些问题,我试图通过使用我在website找到的日期和时间转换字符使其仅以 HH:mm 格式输出时间/p>

DateFormat time = new SimpleDateFormat("HH:mm R");

没有“R”我没有任何问题,但它会输出整个日期和时间,这违背了我的目标。

【问题讨论】:

  • 什么是 R?为什么要使用 R?

标签: java time simpledateformat


【解决方案1】:

好吧,Rnot documented to mean anything,但文档清楚地说明了所有其他格式字符 "...从 'A' 到 'Z' 以及从 'a' 到 'z' 都是保留的。 .",如果你在格式化字符串中使用R,你会得到什么,所有的赌注都没有了。

删除R。如果您的目标是在字符串末尾添加 R,请将其附加到结果中。如果没有,请查阅文档以了解您应该使用什么格式字符。

【讨论】:

    【解决方案2】:

    在 SimpleDateFormat 的 javadoc 中没有“R”——它表示所有未指定的字母都是保留的。我不知道你的网站是从哪里得到的...

    【讨论】:

      【解决方案3】:

      您不需要“R”。如果您想要 24 小时“军事”时间,只需使用大写“HH”即可。删除 R,你应该得到你想要的。如果你不这样做,你可能在你的代码中做了一些你没有发布的错误。

      【讨论】:

        【解决方案4】:

        根据date/time formatting symbols for SimpleDateFormat,没有"R"。事实上,我得到了一个 IllegalArgumentException 尝试使用你所拥有的 "R"

        你不能使用DateFormat time = new SimpleDateFormat("HH:mm R");

        但是,printf recognizes a different set of symbols 用于格式化日期,"R" 在那里定义:

        'R'  Time formatted for the 24-hour clock as "%tH:%tM"
        

        您所指的网站确实提到了"R" - 在printf 部分下,而不是SimpleDateFormat。它提到在所有日期/时间格式符号之前添加t

        试试

        System.out.printf("%tR", new Date());
        

        【讨论】:

          猜你喜欢
          • 2013-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多