為什么顯示的時間與實際的時間差了8小時?
import?java.text.SimpleDateFormat; import?java.util.Calendar; import?java.util.Date; import?java.util.TimeZone; public?class?HelloWorld?{ ???? ????public?static?void?main(String[]?args)?{ //?創建Canlendar對象 ????Calendar?c?=?Calendar.getInstance(); ??????TimeZone?timeZone?=?c.getTimeZone(); ??????System.out.println("timeZone?"+timeZone+"??"); //?將Calendar對象轉換為Date對象 Date?date?=?c.getTime(); ???????? //?創建SimpleDateFormat對象,指定目標格式 SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss"); ???????? //?將日期轉換為指定格式的字符串 String?now?=?sdf.format(date); System.out.println("當前時間:"?+?now); } }
按照網上的說法,查了一下時區,是上海的沒錯啊,但是與現在的時間差了八個小時,也就是說,就是格林尼治時間?是什么問題呢?
2016-01-28
就是服務器的問題,你把代碼放到eclipse顯示的就是本地時間
2016-01-27
這個時間時慕課服務器上的,它服務器采用的時utc時間,而我們電腦本地的時間時東八區,也就是utc+8的時間。當然差了8個小時啦。
換言之,如果慕課他們服務器上的時間一直采用UTC,我們就比他們快8小時。
2015-11-30
我的機子也是差了8個小時,然后我輸出了一下date,結果是:Mon Nov 30 08:10:31 UTC 2015,UTC采用的是世界統一時間。。
中國大陸、中國香港、中國澳門、中國臺灣、蒙古國、新加坡、馬來西亞、菲律賓、西澳大利亞州的時間與UTC的時差均為+8,也就是UTC+8。
2015-11-28
用含參的方式試試:
getInsrance()有多種帶參形式,無參的方法獲取的應該是默認的本機所使用的時區,具體的實現原理我不清楚,你要是感興趣的話可以自己網上查查。所以應該是Java在獲取你本地使用時區的時候掛掉了。你用
打印看一下你的Java獲取的你的時區參數,看下id是不是"GMT+08:00"