Aufgabe: Zeit in Sekunden

jango.g

Mitglied
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:

Java:
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:

Java:
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
 
Zuletzt bearbeitet:
keine Meinung, alle Rahmenbedingungen sind bekannt bzw. im einfachen Maßstab nicht so wichtig,
da kannst du ruhig selber entscheiden,

als etwas Verbesserung noch:
Java:
    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;
    }
 
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ß
 
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.
 
Danke für die Antworten:

Variante 3

Java:
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
 

Neue Themen


Zurück
Oben