Time to long

Happyman0815

Mitglied
Hallo Leute!


Ich versuche derzeit einen Zeitpunkt in einen long Wert umzuwandeln nach dem Gregorian Kalender.
Ich habe einen Zeitpunkt im Format "2009-12-23 21-55-48.0" Dieses Format möchte ich umwandeln.

Wie funktioniert soetwas?

Sinn der Sache ist es ein Änderungsdatum einer Datei zu setzen. Das Format "2009-12-23 21-55-48.0" bekomme ich aus einer mySQL Datenbank. Dieses Datum soll nun eine Datei als Änderungsdatum erhalten.


Meine bisherige Konstruktion:
Java:
currentServerTime=getDatabaseServerTime();
			File fl_time = new File(guiClient.getWorkspace()+this.datParam_class.pfad + this.datParam_class.name); 
			//Date(int year, int month, int date, int hrs, int min, int sec) 
			
		       GregorianCalendar time = new GregorianCalendar(
				Integer.parseInt(currentServerTime.substring(0, 4)),
				Integer.parseInt(currentServerTime.substring(5, 7)),
				Integer.parseInt(currentServerTime.substring(8, 10)),   
				Integer.parseInt(currentServerTime.substring(11, 13)),
				Integer.parseInt(currentServerTime.substring(14, 16)),
				Integer.parseInt(currentServerTime.substring(17, 19)));
			 fl_time.setLastModified(time.getTimeInMillis());

currentServerTime beinhaltet das besagte Format aus der mySQL Datenbank.

Leider setzt meine bisherige Konstruktion den Zeitstempel immer um ca. 1 Jahr in die Zukunft. Woran liegt das??

Gruß
Happy
 
S

SlaterB

Gast
ca. 1 Jahr.., genauer geht es nicht?
bei mir kommt
Sat Jan 23 21:55:48 CET 2010
raus, also ein Monat in der Zukunft, nicht ein Jahr,

das liegt daran, dass Java Monate gerne im Format 0-11 annimmt, 0= Januar, 11 = Dezember,
die 12 aus deinem String wird dann als Januar des nächsten Jahres interpretiert ;)
 

-MacNuke-

Bekanntes Mitglied
Pseudo-Java (nicht getestet)
Sollte aber so in der Art gehen, vllt musst du nur die Parameter anpassen.
Java:
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-DD HH-mm-SS")
Date d = df.parse(currentServerTime)

Aber den Wert bekommst du von MySQL? Inwiefern? Per SQL? Dann sag doch einfach getDate() und lass dir ein Date-Objekt gehen, statt einem Sting?
 

Happyman0815

Mitglied
Pseudo-Java (nicht getestet)
Sollte aber so in der Art gehen, vllt musst du nur die Parameter anpassen.
Java:
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-DD HH-mm-SS")
Date d = df.parse(currentServerTime)

Aber den Wert bekommst du von MySQL? Inwiefern? Per SQL? Dann sag doch einfach getDate() und lass dir ein Date-Objekt gehen, statt einem Sting?


Folgende Methode liefert leider nur das Datum und nicht die Zeit. Uhrzeit = 00-00-00
Java:
	static long getDatabesServerTime_long() {
		Statement st_time;
		ResultSet rs_time;
		try {
			st_time = cn.createStatement();
			rs_time = st_time.executeQuery("SELECT NOW()");
			rs_time.next();
		   
			return rs_time.getDate(1).getTime();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return 0;
	}
 
S

SlaterB

Gast
ein ResultSet hat ja nicht nur die Methode getDate(),
sondern auch eine get-Methode, die sich danach aus den Buchstaben e,i,m + T zusammensetzt,
bisschen ausprobieren, API lesen usw.

edit: zu spät ;)
 

Happyman0815

Mitglied
ca. 1 Jahr.., genauer geht es nicht?
bei mir kommt
Sat Jan 23 21:55:48 CET 2010
raus, also ein Monat in der Zukunft, nicht ein Jahr,

das liegt daran, dass Java Monate gerne im Format 0-11 annimmt, 0= Januar, 11 = Dezember,
die 12 aus deinem String wird dann als Januar des nächsten Jahres interpretiert ;)

Du hast recht. Dann klappt es wohl mit folgender Funktion:
Java:
currentServerTime=getDatabesServerTime();
			File fl_time = new File(guiClient.getWorkspace()+this.datParam_class.pfad + this.datParam_class.name); 
			//Date(int year, int month, int date, int hrs, int min, int sec) 
			
		     GregorianCalendar time = new GregorianCalendar(
				Integer.parseInt(currentServerTime.substring(0, 4)),
				Integer.parseInt(currentServerTime.substring(5, 7))-1, //Monat-- :-)
				Integer.parseInt(currentServerTime.substring(8, 10)),   
				Integer.parseInt(currentServerTime.substring(11, 13)),
				Integer.parseInt(currentServerTime.substring(14, 16)),
				Integer.parseInt(currentServerTime.substring(17, 19)));
			 fl_time.setLastModified(time.getTimeInMillis());

Hab nur 2010 gelesen. Daher hab ich gesagt + 1 Jahr :toll:

Danke!
Happy
 
S

SlaterB

Gast
nachdem dies geklärt ist kann man nun dazu übergehen diesen schlimmen Code an sich abzulehnen,
SimpleDateFormat für String oder die höhere Methode aus dem ResultSet klingen viel besser

selbst wenn man bei diesem Code bleiben würde, könnte doch die Variable currentServerTime gekürzt werden,
auch eine HilfsMethode macht sich gut, so dass nur noch

GregorianCalendar time = new GregorianCalendar(
getSubInt(timeString, 0, 4),
getSubInt(timeString, 5, 7) - 1,
...
);
übrig bleibt
 

Happyman0815

Mitglied
nachdem dies geklärt ist kann man nun dazu übergehen diesen schlimmen Code an sich abzulehnen,
SimpleDateFormat für String oder die höhere Methode aus dem ResultSet klingen viel besser

selbst wenn man bei diesem Code bleiben würde, könnte doch die Variable currentServerTime gekürzt werden,
auch eine HilfsMethode macht sich gut, so dass nur noch

GregorianCalendar time = new GregorianCalendar(
getSubInt(timeString, 0, 4),
getSubInt(timeString, 5, 7) - 1,
...
);
übrig bleibt

Java:
fl_time.setLastModified(rs.getTimestamp(1).getTime() );

:applaus:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
O String in Long Hexerdezimal umwandel Allgemeine Java-Themen 14
O long Fehlermeldung Allgemeine Java-Themen 8
M Map <Long, String> zu Map<String, Long> Allgemeine Java-Themen 9
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
G JTextField Inhalt in einem Long einfügen Allgemeine Java-Themen 2
B Long in einen Double umwandeln und im Label anzeigen Allgemeine Java-Themen 7
P Berechnungen: unterschiedliche Rundungsfehler bei Long? Allgemeine Java-Themen 3
L Variablen longBitsToDouble(long bits) als int Allgemeine Java-Themen 6
A Datentypen Long.valueOf liefert kein "L" am Ende Allgemeine Java-Themen 3
A Long variable wird negativ??? Allgemeine Java-Themen 1
A Zahl zu lang für Long Allgemeine Java-Themen 3
T Datentypen interner Speicherverbrauch x64 long vs. int Allgemeine Java-Themen 8
K Datum+Uhrzeit in Millisekunden (long) umwandeln Allgemeine Java-Themen 7
Z Cast von Long zu Integer funktionert nicht Allgemeine Java-Themen 3
I Gleichzeitiger zugriff auf ein Long über Threads Allgemeine Java-Themen 2
G Unterschied Long - Int Allgemeine Java-Themen 9
D LinkedList anhand einer long-Variable der Objekte sortieren Allgemeine Java-Themen 5
J httpclient: Post-method aber trotzdem "URI to long&quot Allgemeine Java-Themen 4
A serial Version UID field of type long Allgemeine Java-Themen 5
C Wenn long int zu klein Allgemeine Java-Themen 17
L intgeger fehler bei long[][] Allgemeine Java-Themen 4
padde479 The static method sleep(long) from the type Thread should. Allgemeine Java-Themen 2
TheJavaKid Datum -> long Allgemeine Java-Themen 9
D Object to Long casting Allgemeine Java-Themen 9
U Versions-Konfusion: Ist long kein object? Allgemeine Java-Themen 3
H Linksschieben << bei long-Datentypen Allgemeine Java-Themen 2
B Long.parseLong löst teilweise Exception aus. Allgemeine Java-Themen 2
B long : Java-Bug? Allgemeine Java-Themen 3
M Umwandlung eines Long-Wertes in einen String Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben