# Datum+Uhrzeit in Millisekunden (long) umwandeln



## Kumaro (6. Mrz 2012)

HI, ich hab mal wieder ein kleines Problem.

Eigentlich erschien es sehr einfach doch anscheinend ist es das doch nicht, oder ich seh den Wald vor lauter Bäumen nicht mehr ^^. 

Ich hab einen String "Datum" und einen String "Uhrzeit" und will diese angaben in long (also die millisekunden) umwandeln.

Habe das wie folgt gemacht:


```
long a = timeInMilis("25.02.2012", "10:00:00");
		long b = timeInMilis("25.02.2012", "12:26:00");
		long c = timeInMilis("26.02.2012", "12:26:00");
```


Ausgabe:

1330124400000
1330124400000
1330210800000


Irgendwie scheint er die Uhrzeit nicht zu berücksichtigen. Denn eigentlich sollten die Timestamps von a und b doch auch unterschiedlich sein.



```
private static long timeInMilis(String date, String time) throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
	
Date datum = (Date) formatter.parse(date);
long timestamp = datum.getTime();

return timestamp;
```

Was mach ich falsch?

Ich hoffe ihr könnt mir helfen.

Viele Grüße
Kumaro


----------



## ARadauer (6. Mrz 2012)

timeInMilis ist vermutlich falsch... das musst du uns zeigen...


----------



## Gast2 (6. Mrz 2012)

Kumaro hat gesagt.:


> ```
> private static long timeInMilis(String date, String time) throws ParseException {
> DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
> 
> ...



Du übergibts zwar date und time gibst dem Formatter aber nur das date zum parsen. Daraus folgt, dass das Date Objekt datum auch nur das Datum enthalten kann. Daraus folgt wiederrum, dass die getTime() Methode auch nur die Millisekunden fürs Datum auspuckt. 

Versuch mal: 


```
//UNGETESTET
private static long timeInMilis(String date, String time) throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy hh.mm.ss"); //oder so ähnlich!
	
Date datum = (Date) formatter.parse(date + time);
long timestamp = datum.getTime();

return timestamp;
```


----------



## XHelp (6. Mrz 2012)

Guck doch mal in deiner 
	
	
	
	





```
timeInMilis
```
-Methode nach. An welcher stelle verwendest du denn die Variable 
	
	
	
	





```
time
```
? :bahnhof:

@kappesf, müsste noch ein Leerzeichen zwischen die Werte. Aber im Grund kann man auch genau so gut den gesamten String übergeben.. (und Doppelpunkt in dem Format und (vermutlich) eher 
	
	
	
	





```
HH
```
)


----------



## Kumaro (6. Mrz 2012)

Hi, danke das ihr helfen wollt. Danke für den Vorschlag das werde ich auch mal probieren.

ich hab aber jetzt widererwarten doch was gefunden:


```
public static long timeInMilis(String date, String time) {
	TString sd = new TString(date, '.');
	TString st = new TString(time, ':');
	Calendar c = Calendar.getInstance();
	int day = Integer.valueOf(sd.getStrAt(0));
	int month = Integer.valueOf(sd.getStrAt(1))-1;
	int year = Integer.valueOf(sd.getStrAt(2));
	int h = Integer.valueOf(st.getStrAt(0));
	int m = Integer.valueOf(st.getStrAt(1));
	int s = Integer.valueOf(st.getStrAt(2));
	c.set(year, month, day, h, m, s);
return c.getTimeInMillis();
}
```

Das könnte meine Lösung sein oder? Nur leider raff ich nicht so 100% was er da macht und wozu das alles sein muss.

Mags wer erklären? 

Danke


----------



## Gast2 (6. Mrz 2012)

Kumaro hat gesagt.:


> Mags wer erklären?
> Danke



Nein, versuch erst mal was dir geraten wurde...


----------



## ARadauer (6. Mrz 2012)

Kumaro hat gesagt.:


> Das könnte meine Lösung sein oder?



Nein das ist ein kompletter Dreck!



> ```
> private static long timeInMilis(String date, String time) throws ParseException {
> DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
> 
> ...


und du fragst warum die uhrzeit nicht dabei ist? ???:L Sorry, ist das ein Scherz?


----------



## ARadauer (6. Mrz 2012)

so ungefähr...


```
private static long timeInMilis(String date, String time) throws ParseException {
        DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
            
        Date datum = formatter.parse(date+" "+time);
        long timestamp = datum.getTime();
         
        return timestamp;
    }
```


----------

