【问题标题】:Android: Format milliseconds into >60 seconds when no minute format is givenAndroid:当没有给出分钟格式时,将毫秒格式化为 >60 秒
【发布时间】:2011-10-20 06:47:57
【问题描述】:

我得到了一个毫秒值。我想使用格式字符串,将这些毫秒格式化为时间格式。例如45000ms = 45s 或 0m 45s 或其他。所以这没什么特别的。我为此使用了 SimpleDateFormat,但现在我的问题来了:

61000ms 以 1m 1s 结束。这对我来说没问题,IF 格式字符串中给出了一分钟。但是当格式字符串中没有给出分钟时,它应该打印出 61s 而不是只有 1s。

有没有什么简单的方法可以做到这一点?目前我没有做任何丑陋的字符串格式化代码就看不到它。

我希望你能帮助我:)

提前致谢! 被杀

编辑:

为了更好地理解: 你有 65400 毫秒。

格式字符串有分、秒、毫秒:1m 5s 400ms
格式字符串有分和秒:1m 5s
格式字符串有秒数:65s
格式字符串有秒和毫秒:65s 4ms
格式字符串有分钟和毫秒:1m 5400ms

【问题讨论】:

    标签: java android time format milliseconds


    【解决方案1】:

    如果我理解正确,您会得到一个毫秒数和一个时间格式字符串,并且需要生成一个格式正确的时间?如果没有,请忽略其余部分...

    也许不是最好的方法,但有点像瀑布:将毫秒转换为天、小时、分钟、秒(或更多或更少,取决于预期范围)的一组整数,然后向前迭代通过格式字符串。如果存在天,很好,把天数贴在那里。如果不是,请跳过它,乘以 24 并添加到小时数。对小时->分钟、分钟->秒执行相同的操作,即使格式很奇怪(例如天和秒,但不是分钟),您也应该得到正确的格式。

    【讨论】:

    • 是的,你明白我的意思。但是这种“通过格式字符串向前迭代”听起来像我在问题中提到的“丑陋的字符串格式”:(
    • 简单检查 .indexOf("M") == -1
    • 我给它的状态是“回答”,因为它是最接近我的问题的答案。
    【解决方案2】:

    不完全确定您在寻找什么,但您可以像这样解析毫秒;

    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd MMM yyyy");
    
    public static void main(String[] args) {
        final long millis = System.currentTimeMillis();
        System.out.println(DATE_FORMAT.format(new Date(millis))); // Prints 05 Aug 2011
    }
    

    显然,您可以根据需要调整日期格式以显示秒、毫秒等。

    【讨论】:

    • 谢谢,但我没有尝试正常的格式。只有当一分钟在给定的格式字符串中时,我才想显示分钟。如果格式字符串中没有给定分钟,则所有秒都应转换为秒(如果在格式字符串中给出)。
    【解决方案3】:

    我不确定您到底要转换什么,但请查看time units

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 2015-03-06
      • 2020-09-04
      • 1970-01-01
      • 2011-09-26
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      相关资源
      最近更新 更多