微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java以智能方式将秒转换为时间

我想创建一个库,因为我找不到一个将秒或毫秒转换成时间.我的意思是:

1)如果我有61秒,时间格式为:1:01(不是1:1)

2)如果我相当于1小时1分钟,我希望它显示相同:1:01:00

我通过以下结构实现了这一目标:

public String secondsToTime(int seconds){

    String format = "";
    int currentMinutes = 0,currentHour = 0;

    if((seconds / 60) > 0 ) {
        currentMinutes = seconds / 60;
        seconds = seconds - currentMinutes * 60;
    }
    if(currentMinutes >= 60)
    {
        currentHour = currentMinutes / 60;
        currentMinutes = currentMinutes - currentHour * 60;
    }


    if(currentHour == 0) {
        if(currentMinutes < 10 && seconds < 10)
            format = "0"+currentMinutes+":0"+seconds;
        else if(currentMinutes > 9 && seconds < 10)
            format = currentMinutes+":0"+seconds;
        else if(currentMinutes > 9 && seconds > 9)
            format = currentMinutes+":"+seconds;
        else if(currentMinutes < 10 && seconds > 9)
            format = "0"+currentMinutes+":"+seconds;
    }
    else
    {
        Log.i("TEST","Current hour este" + currentHour);
        if(currentMinutes < 10 && seconds < 10)
            format = currentHour+":0"+currentMinutes+":0"+seconds;
        else if(currentMinutes > 9 && seconds < 10)
            format = currentHour+":"+currentMinutes+":0"+seconds;
        else if(currentMinutes > 9 && seconds > 9)
            format = currentHour+":"+currentMinutes+":"+seconds;
        else if(currentMinutes < 10 && seconds > 9)
            format = currentHour+":0"+currentMinutes+":"+seconds;
    }

    return format;
}

有更快的方法吗?

这个问题不重复,因为如果你想显示我想要的格式,java.util.concurrent.TimeUnit不遵循标准.
我同意他为你做转换,但我仍然需要很多if语句来检查每次是否有一个小时我不能显示我的分钟只有1个字符并且不显示小时因为与00小时无关.

正在进行搜索并询问这些问题,因为我想将此算法用于Android上的媒体播放器,以显示总歌曲时间和当前歌曲的第二部分.

例如,我有一些超过一小时的混音和几分钟的音乐,与播放音乐文件的总时间00:02:30无关,正确的方法是:2:30因为没有时间(小时== 0)如果音乐文件有2分3秒,说2:3不正确,正确的方式是2:03.

解决方法

只需将其转换为字符串并切断前导字符,只要它为“0”或“:”即可

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String myDate = dateFormat.format(new  Date(TimeUnit.SECONDS.toMillis(seconds)));
while (( myDate.charat(0).equals("0") || myDate.charat(0).equals(":")){
    myDate = myDate.substring(1);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐