2016-06-30 24 views
0

Im folgenden Code konvertiere ich eine java.util.date in java.sql.date. Ich bin verwirrt an einem Punkt, dass während ich das Datum vor der Epoche wie unten angegeben und ich habe auch date.getTime() -Methode verwendet, die Millisekunden aus der Epoche gibt, gab es mir die richtige Zeit, wie in den Ergebnissen gezeigt. Meine Fragen sind, warum es nicht scheiterte (wie ich es angenommen hatte)? Warum gab es die richtige Zeit?Warum Epoch nicht mit java.util.date fehlgeschlagen?

Code:

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); //defining format 
String dateOfAdmissionInString = "22-01-1966 05:03:33"; 
Date utilDateOfAdmission = sdf2.parse(dateOfAdmissionInString); 
java.sql.Timestamp sqlDateOfAdmission = new Java.sql.Timestamp(utilDateOfAdmission.getTime()); 
System.out.println("utilDateOfAdmission:" + utilDateOfAdmission); 
System.out.println("sqlDateOfAdmission:" + sqlDateOfAdmission); 

Ergebnis:

utilDateOfAdmission: Sat Jan 22 05:03:33 PKT 1966 

sqlDateOfAdmission: 1966-01-22 05:03:33.0 

Antwort

3

Meine Fragen ist, warum es nicht

Da die Anzahl der Millisekunden seit Beginn der Epoche darf nicht hat, negativ sein, das Datum/Zeit vor 1. Januar 1970 um Mitternacht GMT angibt.

Gratuitous example: Elvis' Geburtstag:

Date dt = new Date(-1103932800000L); 
System.out.println(dt.toString()); 
+0

In Ordnung! Ist es in Ordnung, diesen Ansatz zu verwenden? oder wird es irgendwann brechen? –

+1

@RabiaNazkhan: Es ist völlig in Ordnung. Beachten Sie, dass Sie für etwas Bedeutsames 'java.util.Calendar' (das ebenfalls Offsets von The Epoch verwendet) oder die verschiedenen [' java.time' Klassen] (http://docs.oracle.com/javase/) verwenden möchten. 8/docs/api/java/time/package-summary.html) (oder JodaTime) statt dessen, da "Date" nur sehr wenige nützliche Funktionen hat, sind etwa 90% der API veraltet. Aber negative Offsets von The Epoch sind völlig normal. Zum Beispiel behandelt 'java.util.GregorianCalendar' die Diskontinuität im Oktober 1582, so dass erwartet wird, dass negative Epochenwerte behandelt werden. –

+1

In Ordnung! Vielen Dank, Sir, dass Sie meine Konzepte geklärt haben. –

1

Die Epoche nur gibt an, wo der Wert Null ist. Datum/Zeiten vor diesem Punkt können immer noch als negative Offsets aus der Epoche dargestellt werden.

+0

ich Sie Sir nicht bekommen. –

+1

Ein Zeitwert von -86.400.000 ist 1 Tag vor der Epoche oder 31. Dezember 1969 um 00:00:00 (in der GMT/UTC-Zone) –

+0

Vielen Dank Sir für Ihre Antwort. –