2016-04-19 4 views
0

Ich habe ein Feld in meinem db-Namen als updation_date und ich speichere Daten darin als datetime/timestamp und ich spare UTC datetime. Nun, wenn ich die langen Werte abrufen i tun, um dieseGleicher Wert aus der Datenbank gibt verschiedene lange, wenn Code lokal und auf dem Server

rs.getTimestamp("UPDATION_DATE").getTime() 

Nun, wenn ich den Code auf meinem lokalen Rechner laufe ich die richtige UTC-Zeit bekommen (die gleichen i in db gespeichert), aber wenn ich laufe den gleichen Code auf mein Server (es ist in Netharlands) ich bekomme einen langen Wert, aber 3 Stunden mehr als UTC Zeit. Ich weiß nicht, warum ich den Unterschied bekomme, weil ich gerade die Zeit umwandele, die ich von DB zu lang bekomme.

Updation: ich mit dieser Funktion versuchte UTC-Datum zu erhalten, aber noch keine Wirkung

private static String DATEFORMAT = "yyyy-MM-dd'T'HH:mm:ssZ"; 

public static Long getUTCTime(Timestamp dateTime) throws ParseException{ 
    SimpleDateFormat sdf = new SimpleDateFormat(DATEFORMAT); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 

    Date date = sdf.parse(getStringDate(dateTime)); 
    return date.getTime(); 
} 

public static String getStringDate(Timestamp dateTime) throws ParseException 
{ 
    SimpleDateFormat sdf = new SimpleDateFormat(DATEFORMAT);   
    return sdf.format(new Date(dateTime.getTime())); 
} 

und jetzt lange speichern, wie diese

setUpdationDate(Constants.getUTCTime(rs.getTimestamp("UPDATION_DATE")); 

Antwort

0

Von Javadoc:

Sets Der angegebene Parameter für den angegebenen java.sql.Timestamp-Wert unter Verwendung des angegebenen Calendar-Objekts. Der Treiber erstellt mit dem Calendar -Objekt einen SQL TIMESTAMP-Wert, den der Treiber dann an die Datenbank sendet ( ). Mit einem Calendar-Objekt kann der Treiber den Zeitstempel unter Berücksichtigung einer benutzerdefinierten Zeitzone berechnen. Wenn kein Kalenderobjekt angegeben ist, verwendet der Treiber die Standardzeitzone . Dies ist die der virtuellen Maschine, auf der die Anwendung ausgeführt wird.

Is java.sql.Timestamp timezone specific?

+0

Warum muss ich die richtige UTC-Zeit, wenn ich diese lokal ausführen, ich meine natürlich auch meine Zeitzone ist anders heißt GMT –

+0

Ihr haben lokale 3 Stunden Unterschied zwischen Niederlande, die Situation normal ist. Versuchen Sie Zeit mit einer bestimmten Zeitzone zu bekommen, wahrscheinlich erhalten Sie eine andere Antwort. Wenn Sie beim Speichern des Datums keine Zeitzone angeben, können Sie nicht sicher sein, dass Sie in Ihrem lokalen Netzwerk UTC-Zeit erhalten. – ugurdonmez

+0

scheinen Sie in Islamabad zu leben (GMT + 5) und Ihr Server ist in den Niederlanden (GMT + 2). Es ist also normal, dass Sie einen Unterschied von 3 Stunden haben, wenn Sie eine lange Millisekunde in datetime konvertieren. – ugurdonmez

Verwandte Themen