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

Java 将多个时间表示形式转换为分钟,java,Java,我在这里的第一篇帖子是,如果我在之前的回答中遗漏了一些相当明显的东西,请道歉。我有几部电影和专辑,都是以以下方式呈现的 hh:mm:ss 嗯 5小时 5小时55分钟 55分钟 555分钟 我需要一个脚本,它接受编译器接收到的这些格式中的任何一种,并将其转换为表示分钟数的简单int。 回顾以前关于将时间转换为分钟的问题,我现在就到这里 for(runtime != null) { //Get rid of "mins", "hrs".. runtim

我在这里的第一篇帖子是,如果我在之前的回答中遗漏了一些相当明显的东西,请道歉。我有几部电影和专辑,都是以以下方式呈现的

hh:mm:ss

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
    }

我对此相当陌生,但如果我没有弄错的话,被拆分的数字可能意味着在运行时的某些表示中,分钟、小时和秒可能会变得混乱。。真的不知道该怎么办。非常感谢您的帮助

如果您想将时间转换为分钟,您应该像

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分钟,正如我在评论中所建议的那样,您的代码是:

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

正如您所说,您的运行时可以采用任何格式, 因此,如果你的时间是
5小时:32分钟
,那么你很可能
索引越界异常

因此,假设您将在
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
secs
进行解析

int totalTimeInMinutes= (hr*60)+min+(sec%60f);

如果必须,请使用或JDK日期/日历clusterfsck。两者中的任何一个都比你正在做的事情要好,这就是重新发明轮子,Java已经发明了好几次,而且都很糟糕。你能详细说明一下你的拦截器是什么吗?您是否难以将提供的hh:mm:ss案例的伪代码转换为真实代码,或者您是否在询问如何实现其他案例?问题是,或者至少我不理解的是,如果时间格式始终为01:33:30,这似乎很简单。。但是如果我的时间是1小时33分钟呢。。或者只有93分钟。。我需要代码准备好接受伪代码中提供的任何一种格式。。如果有道理的话,请原谅我的无知和双重身份。但我想我真正的问题是,我如何让代码确定在给定的任何一次中提供了哪些字段(小时、分钟或秒),然后根据伪代码中的表示,如何将其拆分为小时、分钟或秒的独立整数?
int-sec=(int)(secs/60)这始终是0,假设
秒<60
谢谢您的输入!找不到指向页面的Joda时间点的链接。而且你误解了这个问题。可怜的回答。与其抱怨它,@shoppingdconut,你为什么不把它修好呢?所以在案例2中,我会说mins=parts[0]和secs=parts[1]??例如,如果仅提供了两个字段??是和秒=部分[1]!!!只要考虑假设另一部分,它将导致严重后果,我明白,有道理。谢谢。好的,我明白了。。我还注意到,在您的示例中,您确实将其包含为“5小时:32分钟”。。假设格式保持hh:mm:ss,问题就会出现。。如果我得到的“5小时32分钟”不是用冒号分隔的???@Vesser,你必须至少在一个因素上妥协,要么你得到任何特定的delimeter(
空格
)的时间,否则你更喜欢任何标准的Java日期类,或3r方库,如Joda、Java 8的LocalTime等