Jag undrar om det finns någon inbyggd klass som kan konvertera en text sträng till en tid.
Om jag har denna stäng, 1:15.455 (1 minut, 15 sekunder och 455 tusendelar) så konverterar funktionen detta till tusendelar av en sekund (millisekunder, samma som används i Timestamp).
import java.util.StringTokenizer;
public class TimeConvert{
private static final int MILLISEKUNDER_I_EN_SEKUND = 1000;
private static final int SEKUNDER_I_EN_MINUT = 60;
private static final String UPPDELARE = ".:;,";
public static long konvertera(String tiden){
StringTokenizer token = new StringTokenizer(tiden, UPPDELARE);
int minuter = Integer.parseInt(token.nextToken());
int sekunder = Integer.parseInt(token.nextToken());
int milliSekunder = Integer.parseInt(token.nextToken());
long totalMilliSekunder = milliSekunder + (sekunder * MILLISEKUNDER_I_EN_SEKUND)
+ (minuter*SEKUNDER_I_EN_MINUT*MILLISEKUNDER_I_EN_SEKUND);
return totalMilliSekunder;
}
}
Den kan anrops via TimeConvert.konvertera(strängen med tiden. Den returnerar antalet millisekunder som long.
Du kan använda ".:,;" som delare mellan minut,sekund och millisekunder.
En liten följdfråga,
Hur gör man tvärtom? När jag hämtar tiden i millisekunder från databasen och vill visa den i rätt format (1:16.233)? Någon som har något bra förslag? Eller är det loopar som gäller?
Jag får tyvärr bara "Unparseable date: 1:19.999" när jag försöker använda DateFormat för att konvertera en tid (m:s.milli).
DateFormat vill väll ha en tid (ett klockslag) och ett datum, inte en tidtagnings tid.
Jag tror jag fortsätter med den. Det som är bra med den är att det inte behöver vara ett exakt format, man kan skilja på tecknen med .,:;, kan vara bra när det är "data amatörer" som ska knappa in tiden :)
/Viktor
267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849