Souhlasím s Otou. Tyhle řetězce nevyjadřují čas od půlnoci dané časové zóny, ale čas od začátku závodu. Takže třídy v java.util a java.text jsou pro to zcela nevhodné.
Vzhledem k tomu, že vhodná třída pro tenhle typ údaje je org.joda.time.Duration,
ale ta nemá parsování, udělal bych prostě tohle:
public static void main(String[] args) {
String t1 = "00:30:10";
String t2 = "00:40:20";
int timeInSeconds = parseDuration(t2)-parseDuration(t1);
System.out.println("timInSeconds = " + timeInSeconds);
}
private static int parseDuration(String t1) {
String[] p = t1.split(":");
return
Integer.parseInt(p[0])*3600+Integer.parseInt(p[1])*60+Integer.parseInt(p[2]);
}
Makub
Oto Buchta napsal(a):
> No nevím. Podle mého je nejjednodušší cestou vlastní triviální parser,
> který ze stringů udělá milisekundy.
> Pomocí String.split(), Integer.parseInt() a operace násobení.
>
> 2010/3/7 danisevsky <[email protected]>:
>> diky, toto:
>>
>> Date date3 = new Date(date1.getTime() - date2.getTime() +
>> date1.getTimezoneOffset()*60000);
>>
>> funguje, ale metoda getTimezoneOffset() je deprecated a navic jsem k
>> java.util.Date ztratil duveru, protoze teto tride a jeji praci s casem vubec
>> nerozumim.
>>
>> Muj pozadavek je jednoduchy, prijdou mi dva Stringy predstavujici cas ve
>> tvaru "HH:mm:ss" a znamenaji:
>>
>> 1. string = doba za kterou auto ujelo 1. okruh
>> 2. string = doba za kterou auto ulejo 1. okruh + 2. okruh
>>
>> ja potrebuji cisty cas za ktery auto ujelo 2. okruh.
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Science email: [email protected]
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
