【问题标题】:Formatting mili seconds in java using only hundredth and tenth position of the mill seconds仅使用千分位秒的百分位和十分位在java中格式化毫秒
【发布时间】:2017-05-18 09:17:56
【问题描述】:

我正在尝试使用下面的代码在 mm:ss:MsMs 中格式化计时,但无论如何代码都给了我所有三个位置的 mili 秒 MsMsMs。 我得到了什么: 00:05:231 我想要的是: 00:05:23

   milliseconds = (int) (appCurrentTime % 1000);

    time.setText(String.format("%02d", mins) + ":" +String.format("%02d", secs) + ":" + String.format("%02d", milliseconds)); 

如果我尝试“appCurrentTime % 100”,它将给我一个和第十位的位置,因为我需要百分之一和第十位。 从: 00:05:231 我得到了什么: 00:05:31 我想要的是: 00:05:23

【问题讨论】:

  • 我不明白你是如何计算 minssecs 这里的......请提供一些可复制的。你有没有想过DateFormatter

标签: java android android-studio


【解决方案1】:

如果您有 java.util.Date 对象,这是您可以遵循的一种方法。

Date d = new Date();
System.out.println(new SimpleDateFormat("mm:ss:").format(d)+String.format("%.2s", new SimpleDateFormat("SS").format(d)));

如果您可以通过其他方式获得毫秒变量,则可以使用以下内容打印第 100 位和第 10 位。

System.out.println(milliseconds/10);

【讨论】:

  • 我会删除字符串的最后一个字符,使其只有 2 位为 milliseoncds 但这也有效(我不知道直接限制数字的方法)
  • 来自 SimpleDateFormat 文档,它的最小位数,但它不提供最大位数的限制 - docs.oracle.com/javase/7/docs/api/java/text/… - 对于格式化,模式字母的数量是最小位数,并且较短的数字被零填充到这个数量。解析时,模式字母的数量会被忽略,除非需要分隔两个相邻的字段。
【解决方案2】:
   milliseconds = (int) (appCurrentTime % 1000);

            String hours,
            minutes=String.format("%02d", mins),
            seconds=String.format("%02d", secs),
            miliSeconds=String.format("%03d", milliseconds);

            time.setText(minutes + ":" + seconds+ ":" + miliSeconds.substring(0,2) );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2011-02-23
    • 2015-02-28
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多