1. 程式人生 > >java實現定時關機

java實現定時關機

	public static void main(String[] args) {
		//定時關機
		
		//顯示當前時間
		Calendar c1=Calendar.getInstance();    //建立當前時間的日曆類物件
		Date nowDay=c1.getTime();              //獲取當前日期物件
		
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //時間格式化類
		System.out.println(sdf.format(nowDay));           //轉化時間格式並輸出
		
		//設定關機時間 
		Scanner in =new Scanner(System.in);
		System.out.println("請設定您要關機的時間:");
		System.out.print("時:");
		int offHour=in.nextInt();
		System.out.print("分:");
		int offMinute=in.nextInt();
		
		//比較當前時間和關機時間 比較小時部分 如果關機時間小於當前時間  就設定成明天才關機  
		//                        如果關機時間等於當前時間  而關機分鐘數小於當前分鐘數 也設定成明天才關機
		int hour=c1.get(Calendar.HOUR_OF_DAY);     //獲取當前時間的小時數
		int minute=c1.get(Calendar.MINUTE);        //獲取當前時間的分鐘數
		
		//建立關機時間的日曆類物件
		Calendar c2=Calendar.getInstance();
		if(offHour<hour){
			c2.add(Calendar.DAY_OF_MONTH,1);
		}else if(offHour==hour&&offMinute<minute)
		{
			c2.add(Calendar.DAY_OF_MONTH, 1);
		}
		
		//設定關機時間的小時部分和分鐘部分
		c2.set(Calendar.HOUR_OF_DAY ,offHour);
		c2.set(Calendar.MINUTE, offMinute);
		
		//比較兩個時間的毫秒值
		long sub=c2.getTimeInMillis()-c1.getTimeInMillis();
		System.out.println("還有"+(sub/1000/60)+"分鐘關機");
		
		System.out.println("是否設定定時關機(y/n)");
		String flag=in.next();
		if("y".equals(flag)){
			System.out.println("倒計時中。。。。。");
			new Timer().schedule(new TimerTask(){
				public void run(){
					try {
						Runtime.getRuntime().exec("shutdown -s ");
					} catch (IOException e) {
						
						e.printStackTrace();
					}
				}		
			}, sub);
		}
	}