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