Java 如果分钟数的格式为字符串,如何对数组中的分钟数求和?

Java 如果分钟数的格式为字符串,如何对数组中的分钟数求和?,java,time,Java,Time,我有一个字符串数组,其中包含一些分钟,如“00:05”、“00:30”、“00:25”等。我想将这些值相加为时间格式?有人能帮我怎么做吗?我要快走快走 上的每个字符串“:” 两部分都是整数 将第一次乘以60,将小时转换为分钟,然后将第二部分相加 对数组中的每个值执行此操作,并将它们一起计数 这将导致以分钟为单位的总时间,您可以将其转换为您喜欢的任何格式 这是我的建议。既不编译、运行、测试也不保证 long seconds = 0; for ( String min : minutes ) {

我有一个字符串数组,其中包含一些分钟,如“00:05”、“00:30”、“00:25”等。我想将这些值相加为时间格式?有人能帮我怎么做吗?

我要快走快走

  • 上的每个字符串“:”
  • 两部分都是整数
  • 将第一次乘以60,将小时转换为分钟,然后将第二部分相加
  • 对数组中的每个值执行此操作,并将它们一起计数
  • 这将导致以分钟为单位的总时间,您可以将其转换为您喜欢的任何格式

  • 这是我的建议。既不编译、运行、测试也不保证

    long seconds =  0; 
    for ( String min : minutes )
    {
        seconds += Integer.parseInt(min.substring(0,1))*60 + Integer.parseInt(min.substring(3,4));
    }
    return new Date ( seconds / 1000 ) ;
    

    你可以这样做,然后查看结果。对于小时部分,执行相同的操作,并将其乘以60。

    将“:”上的字符串拆分,将值分成整数并相加。

    以分钟为单位的总时间:

    int sum = 0;
    final String[] mins = new String[] { "00:05", "00:30", "00:25" };
    for (String str : mins) {
        String[] parts = str.split(":");
        sum += Integer.parseInt(parts[1]);
    }
    System.out.println(sum);
    
    您没有明确指定此输出的格式

    如果可能还有小时元素,则将循环的第二行替换为:

    sum += (Integer.parseInt(parts[0]) * 60) + Integer.parseInt(parts[1]);
    

    面向对象的方法:

    public static TimeAcumm sum(final String[] times) {
        final TimeAcumm c = new TimeAcumm();
        for (final String time : times) {
            c.incrementFromFormattedString(time);
        }
    
        return c;
    }
    
    public class TimeAcumm {
        private int hours = 0;
        private int minutes = 0;
        private int seconds = 0;
    
        public int getHours() {
            return hours;
        }
    
        public int getMinutes() {
            return minutes;
        }
    
        public int getSeconds() {
            return seconds;
        }
    
        public void incrementFromFormattedString(final String time) {
            final String[] parts = time.split(":");
            this.minutes += Integer.parseInt(parts[0]);
            this.seconds += Integer.parseInt(parts[1]);
            validate();
        }
    
        private void validate() {
            if (this.minutes > 59) {
                this.hours++;
                this.minutes -= 60;
            }
    
            if (this.seconds > 59) {
                this.minutes++;
                this.seconds -= 60;
            }
        }
    
        @Override
        public String toString() {
            final String s = hours + "H:" + minutes + "M:" + seconds + "S";
            return s;
        }
    }
    
    此行--
    新日期(秒)--不会做你想做的事。