為什么顯示的時間與實際的時間差了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
用含參的方式試試:
Calendar?c?=?Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));????//獲取東八區時間getInsrance()有多種帶參形式,無參的方法獲取的應該是默認的本機所使用的時區,具體的實現原理我不清楚,你要是感興趣的話可以自己網上查查。所以應該是Java在獲取你本地使用時區的時候掛掉了。你用
System.out.println(TimeZone.getTimeZone("GMT+08:00"));打印看一下你的Java獲取的你的時區參數,看下id是不是"GMT+08:00"