# Aufgabe: Zeit in Sekunden



## jango.g (18. Jul 2011)

Hallo, 
hab schon viel gesucht aber nichts gefunden...

Ich suche Meinungen zu den von mir erdachten 2 Varianten "Eine Zeitangabe in Sekunden um zurechnen"

Eingabestring sollte im Format "hh:mi:se" sein, muss es aber nicht.

Variante 1:


```
public static long toSecWithJava(String in) throws ParseException {
	Date d = new SimpleDateFormat("HH:mm:ss").parse(in);
	GregorianCalendar g = new GregorianCalendar(Locale.GERMANY);
	g.setTime(d);
	// Sommerzeit beachten
	g.add(Calendar.HOUR, 1);
	return g.getTimeInMillis() / 1000 ;
}
```

Variante 2:


```
public static long toSecSelfMade(String in) {
	String[] temp = in.split(":");
	return (Long.parseLong(temp[0]) * 3600) + (Long.parseLong(temp[1]) * 60) + Long.parseLong(temp[2]);
}
```

Welche Variante findet ihr besser? Und vor allem warum? Oder habt ihr vielleicht nein schöneren Vorschlag?

Gruß
jg


----------



## SlaterB (18. Jul 2011)

keine Meinung, alle Rahmenbedingungen sind bekannt bzw. im einfachen Maßstab nicht so wichtig,
da kannst du ruhig selber entscheiden,

als etwas Verbesserung noch:

```
public static long toSecWithJava(String in)  throws ParseException  {
        SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
        df.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date d = df.parse(in);       
        return d.getTime() / 1000;
    }
```


----------



## ARadauer (18. Jul 2011)

// Sommerzeit beachten
was ist wenn Winter ist?


----------



## SlaterB (18. Jul 2011)

es ist immer Winter, denn es geht um Java-Millisekunden nahe 0, 1.1.1970 in London


----------



## jango.g (18. Jul 2011)

Sorry, den Kommentar kann man ignorieren, ich hab bloß einen Grund gesucht warum ich immer eine Stunde drauf rechnen muss um ein "genulltes" Date zu haben... das ist eher die Abweichung zur GMT, wissen tue ich es aber auch nicht so genau, wenn einer gleich noch eine Antwort auf diese Frage hat kann er es bitte gleich mitposten^^

Gruß


----------



## SlaterB (18. Jul 2011)

meine Postings (in beiden steht die Antwort..) sind manchmal mehr als heiße Luft


----------



## HoaX (18. Jul 2011)

Deine beiden Varianten liefern aber total unterschiedliche Ergebnisse.

Du sagst eine Zeitangabe in Sekunden, also geht eigentlich nur die erste Variante 1. Denn die zweite Variante 1 liefert eine Dauer in Sekunden.
Ich denke du solltest erstmal entscheiden was du willst. Calendar liefert dir die Millisekunden seit 1.1.1970.


----------



## SlaterB (18. Jul 2011)

beide Varianten liefern Sekunden und in kleinen Bereichen dieselben Ergebnisse?


----------



## jango.g (18. Jul 2011)

Danke für die Antworten:

Variante 3


```
public static long toSecWithJava(String in)  throws ParseException  {
        SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
        df.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date d = df.parse(in);       
        return d.getTime() / 1000;
}
```

gefällt mir am besten, ist mit der StandartAPI realisiert, wirft eine konkrete Exception bei Fehleingabe, und das Ergebnis ist richtig.

Gruß 
jg


----------



## HoaX (18. Jul 2011)

SlaterB hat gesagt.:


> beide Varianten liefern Sekunden und in kleinen Bereichen dieselben Ergebnisse?



Ok, ich hatte unrecht. Ich war der Meinung dass SimpleDateFormat das aktuelle Datum setzt wenn dieses nicht mitgeparst wird, aber dem ist offensichtlich nicht so.


----------

