UnixTime

Status
Nicht offen für weitere Antworten.

Rainbow

Bekanntes Mitglied
Hi,
ich habe ein Problem damit, ein normales Datum in der Form "dd.MM.yyyy HH:mm:ss:SS"
in einen long, also in die Unix Zeit umzuwandeln.
Ich habe dazu keine passende Methode im SimpleDateFormat oder so gefunden.
Kann mir wer sagen, ob es eine Methode gibt, die ein Datum in einen long umwandelt?
 

Rainbow

Bekanntes Mitglied
das funktioniert nicht, oder mein aufruf ist falsch

[HIGHLIGHT="Java"]String dateFormat = "dd.MM.yyyy HH:mm:ss:SS";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
simpleDateFormat.parseObject("10.11.2009 13:45:54");[/HIGHLIGHT]
 

Rainbow

Bekanntes Mitglied
achso also die Funktion macht zwar was, aber nciht das was ich will...die gibt mir das hier aus:

Tue Nov 10 13:45:54 CET 2009

ich möchte aber einen long haben...
 

Der Müde Joe

Top Contributor
die ms fehlen;
Code:
String s = "10.11.2009 13:45:54:123";
java.text.DateFormat df = new java.text.SimpleDateFormat("dd.MM.yyyy HH:mm:ss:SS");
System.out.println(df.parse(s));
System.out.println(df.parse(s).getTime());
 

ARadauer

Top Contributor
achso also die Funktion macht zwar was, aber nciht das was ich will...die gibt mir das hier aus:

Tue Nov 10 13:45:54 CET 2009

ich möchte aber einen long haben...
vielleicht, schadet es nicht wenn du verstehst was hier passiert. du gibt das teil aus, das ist aber kein String sondern ein Date

Java 2 Platform SE 5.0 ist ein guter ausgangspunkt..

parse von DateFormat, gibt ein Date zurück.

was passiert nun, wenn du dieses Date ausgibtst? Es wird die toString methode aufgerufen

die toString Methode von Date sieht so aus...
Code:
    public String toString() {
	// "EEE MMM dd HH:mm:ss zzz yyyy";
	BaseCalendar.Date date = normalize();
	StringBuilder sb = new StringBuilder(28);
	int index = date.getDayOfWeek();
	if (index == gcal.SUNDAY) {
	    index = 8;
	}
	convertToAbbr(sb, wtb[index]).append(' ');			  // EEE
	convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
	CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd

	CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
	CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
	CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
	TimeZone zi = date.getZone();
	if (zi != null) {
	    sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
	} else {
	    sb.append("GMT");
	}
	sb.append(' ').append(date.getYear());  // yyyy
	return
natürlich nicht das was du willst wenn du nur den timestamp brauchst...

getTime()
Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.
besser... ;-)
 

Rainbow

Bekanntes Mitglied
gibt es mit dem SimpleDateFormat auch die Möglichkeit, dass man mit diesen Ausdruck arbeiten kann?

[HIGHLIGHT="Java"]dateFormat = "dd.MM.yyyy HH:mm";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
long time = simpleDateFormat.parse("01.01.1987 12:45").getTime();[/HIGHLIGHT]

hierbei bekomme ich nämlich eine ParseException
 

ARadauer

Top Contributor
// "EEE MMM dd HH:mm:ss zzz yyyy";


probier das mal...dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy";
.
 
Status
Nicht offen für weitere Antworten.

Oben