1. 程式人生 > >獲取網路日期時間,並設定本機系統日期時間

獲取網路日期時間,並設定本機系統日期時間

/**
     * 獲取指定網站的日期時間
     *
     * @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);
                    
                }