獲取網路日期時間,並設定本機系統日期時間
* 獲取指定網站的日期時間
*
* @param webUrl
* @return
* @author SHANHY
* @date 2015年11月27日
*/
private static Date getWebsiteDatetime(String webUrl){
try {
URL url = new URL(webUrl);// 取得資源物件
URLConnection uc = url.openConnection();// 生成連線物件
uc.connect();// 發出連線
long ld = uc.getDate();// 讀取網站日期時間
Date date = new Date(ld);// 轉換為標準時間物件
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);// 輸出北京時間
// return sdf.format(date);
return date;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 通過獲取多個網站的日期時間進行判斷 提升獲取的日期時間的準確性
* @return
*/
public static Date getWebDatetime(){
String webUrl2 = "http://www.baidu.com";//百度
String webUrl3 = "http://www.taobao.com";//淘寶
String webUrl4 = "http://www.ntsc.ac.cn";//中國科學院國家授時中心
String webUrl5 = "http://www.360.cn";//360
String webUrl6 = "http://www.beijing-time.org";//beijing-time
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
Date date2=Get11x5Data.getWebsiteDatetime(webUrl2);
Date date3=Get11x5Data.getWebsiteDatetime(webUrl3);
Date date4=Get11x5Data.getWebsiteDatetime(webUrl4);
Date date5=Get11x5Data.getWebsiteDatetime(webUrl5);
Date date6=Get11x5Data.getWebsiteDatetime(webUrl6);
String datetime2=sdf.format(date2);
String datetime3=sdf.format(date3);
String datetime4=sdf.format(date4);
String datetime5=sdf.format(date5);
String datetime6=sdf.format(date6);
// System.out.println("【getWebDatetime】date2"+datetime2);
// System.out.println("【getWebDatetime】date3"+datetime3);
// System.out.println("【getWebDatetime】date4"+datetime4);
// System.out.println("【getWebDatetime】date5"+datetime5);
// System.out.println("【getWebDatetime】date6"+datetime6);
if(datetime2.equals(datetime3) && datetime2.equals(datetime4)){
return date2;
}else if(datetime3.equals(datetime4) && datetime3.equals(datetime5)){
return date3;
}else if(datetime4.equals(datetime5) && datetime4.equals(datetime6)){
return date4;
}else if(datetime2.equals(datetime3)){
return date2;
}else if(datetime2.equals(datetime4)){
return date2;
}else if(datetime2.equals(datetime5)){
return date2;
}else if(datetime2.equals(datetime6)){
return date2;
}else if(datetime3.equals(datetime4)){
return date3;
}else if(datetime3.equals(datetime5)){
return date3;
}else if(datetime3.equals(datetime6)){
return date3;
}else if(datetime4.equals(datetime5)){
return date4;
}else if(datetime4.equals(datetime6)){
return date4;
}else if(datetime5.equals(datetime6)){
return date5;
}
return null;
}
//在某個時間開始獲取網路時間日期,並設定本地時間
Date nowDate=new Date();//獲取當前系統日期時間
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowDateStr=sdf.format(nowDate);
String time = nowDateStr.substring(11,16); //擷取當前時間
//每天早晨九點設定本機系統時間為網路時間
if("09:00".equals(time)){
Date nowNetWorkDate=getWebDatetime();//獲取當前網路日期時間
String str=sdf.format(nowNetWorkDate);
String dateStr=str.substring(0, 10);//擷取當前網路日期
String timeStr=str.substring(11, 19);//擷取桑倩網路時間
//windows系統設定日期時間
Runtime.getRuntime().exec("cmd /c date "+dateStr);
Runtime.getRuntime().exec("cmd /c time "+timeStr);
}