将多个时间表示转换为分钟

时间:2015-03-20 07:30:29

标签: java

我在这里的第一篇文章,如果我在之前的答案中错过了一些相当明显的内容,请道歉。我有几个电影和专辑的运行时间以下列方式表示。

HH:MM:SS

HH:MM

5小时

5小时55分钟

55分钟

555分钟。

我需要一个脚本,它接受编译器接收的这些格式中的任何一种,并将其转换为表示分钟的简单int。 回顾以前关于将时间转换为分钟的问题,到目前为止我在这里......

    for(runtime != null)
    {
        //Get rid of "mins", "hrs"..
        runtime.replaceAll("[a-zA-Z]", "");

        //Split time into parts dependent on the length of runtime.. 
        String[] parts = runtime.split(":",runtime.length());

        String hrs = parts[0];
        String mins = parts[1];
        String secs = parts[2];

        if (hrs != null)
        {
            // hrs * 60
        }
        if (secs != null)
        {
            //secs / 60
        }

        //convert all to int
        //hrs + mins + secs
    }

我对此很新,但是如果我没有弄错的话,被拆分的数字可能意味着在运行时的某些表示中,分钟,小时和秒可能会变得混乱。真的不确定在哪里跟着这个。非常感谢帮助

3 个答案:

答案 0 :(得分:0)

如果你想在几分钟内转换时间,你应该这样做,

int hr, sec;

if (hrs != null)
{
    hr = hrs * 60
}
if (secs != null)
{
    sec = (secs % 60) * 0.01;
}

//convert all to float
int time = hr + mins + sec;

这会将2小时20分20秒转换为140.20分钟

答案 1 :(得分:0)

正如我在评论中建议的那样,使用Joda-Time,您的代码将是:

long numberOfMinutes = new Duration(new DateTime(date1), new DateTime(date2)).getStandardMinutes();

答案 2 :(得分:0)

正如您所说,您的运行时可以采用任何格式, 所以如果你的时间在5hrs:32min那么你可能会有 Index out of bounds exception

所以假设你会在HH : MM : SS

中保持运行时的顺序
String[] parts = runtime.split(":",runtime.length());
       int length=parts.length;
        String hrs=null,mins=null,secs=null 
 switch(length){    
     case 3:
            hrs = parts[0];
            mins = parts[1];
           secs = parts[2];
           break;
     case 2:
           // populate 1st 2
     case 1:
          // populate only 1st one
    }

现在是时候计算,解析你可以通过Integer.parseInt(hrs)mins的{​​{1}}进行解析。

secs