底層實現的Date
和Calendar
都使用相同的系統:一個long
表示毫秒數自1970年1月,0:00:00北京時間1日。 爲Date
(線136 & 168)和HERE爲Calendar
(線778)
所以這會讓我們這個見Here:
cal.setTimeInMillis(inputDate.getTime());
// this gets the long from the Date and puts it into the Calendar
// nothing is changed, you only get added functionality
// even if you change the Timezone this only affects how it is displayed
cal.set(Calendar.MILLISECOND, 0);
// the long is modified by setting the that represents only milliseconds to zero
inputDate = cal.getTime();
//the long is stored in a Date and returned
你得到一個最低限度的改變Date
對象。沒有第二條指令就沒有任何改變。
這解釋了爲什麼沒有轉換,但不是爲什麼選擇不起作用。
從您給出的信息看來,數據庫,JVM和系統的三位一體的時區看起來不匹配。
這裏的一些東西:你的系統設置爲IST,你的JVM以某種方式將你的系統時間解釋爲GMT。要檢查這個,你可以運行System.out.println(new Date())
。如果它將時區寫出爲GTM,但數字與系統時鐘(IST)相同,那麼這就是您的問題。
你也可以查看:
- 做一個INSERT語句匹配的時間戳與數據庫中
- 什麼到達做一個數據庫條目的時間戳匹配您以後收到一個選擇
數據庫使用什麼時區? – Dawnkeeper
當我執行「從雙重選擇dbtimezone」它給了「+00:00」 – user2902067
好的。你到底在做什麼?插入數據庫?從數據庫中選擇?和(如'代碼示例')? – Dawnkeeper