Hoe som minuten in array op als het formaat string is?

Ik heb een string array met enkele minuten zoals "00:05", "00:30", "00:25" enz. Ik wil de waarden optellen als tijdsformaat? Kan iemand me helpen, hoe kan ik dit doen?

1

6 antwoord

Ik ga voor snel en vies

  1. Split each String on the ":"
  2. Convert both parts to integer
  3. Multiply the first time by 60 to convert hours to minutes, and add the second part
  4. Do this for each value in your array, and count them together
  5. This results in the total time in minutes, which you can convert to whatever format you like
1
toegevoegd

Totale tijd in minuten:

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);

U specificeert niet precies hoe u deze uitvoer wilt formatteren.

Als er ook uur-elementen zijn, vervang dan de tweede regel van de lus door dit:

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

dit is mijn suggestie. Noch gecompileerd, uitgevoerd, getest, noch gegarandeerd.

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 ) ;
0
toegevoegd
@lwburk - je hebt gelijk
toegevoegd de auteur emory, de bron
Deze regel - nieuwe datum (seconden); - zal niet doen wat u wilt.
toegevoegd de auteur Wayne Burkett, de bron

U kunt substring en vervolgens Integer.parseInt over het resultaat. Voor het urengedeelte, doe hetzelfde en vermenigvuldig dit met 60.

0
toegevoegd

Splits de strings op ':', parseer de waarden als ints en voeg ze toe.

0
toegevoegd

Een objectgerichte benadering:

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;
    }
}
0
toegevoegd