在Java中,我們經(jīng)常需要獲取或者設(shè)定系統(tǒng)的時間。有時候我們需要把系統(tǒng)時間設(shè)定成一個特定的時間,這時候我們需要知道如何去設(shè)定。下面我們就來談?wù)凧ava設(shè)定時間和系統(tǒng)時間一樣的方法。
/** * 將系統(tǒng)時間設(shè)定為指定時間 * @param year 年份 * @param month 月份 * @param day 日 * @param hour 小時 * @param minute 分鐘 */ public static void setSystemTime(int year, int month, int day, int hour, int minute) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, day, hour, minute); long timeInMillis = calendar.getTimeInMillis(); try { Process process = Runtime.getRuntime().exec("su"); String datetime = "date -s " + DateFormat.format("yyyy-MM-dd hh:mm:ss", timeInMillis).toString(); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os.writeBytes(datetime + "\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }
上面的代碼,我們通過獲取當前時間的Calendar對象,然后再通過set方法設(shè)定特定的時間。我們在設(shè)定好時間后,將其轉(zhuǎn)換成一個時間戳,然后再通過執(zhí)行Linux命令,將系統(tǒng)時間修改為設(shè)定的時間。
需要注意的是,為了保證我們能夠執(zhí)行Linux命令,我們需要獲得root權(quán)限。也就是說,這個方法只適合在具有root權(quán)限的設(shè)備上調(diào)用。
總結(jié)一下,Java設(shè)定系統(tǒng)時間和設(shè)定一個特定的時間差不多,只要把設(shè)定的時間設(shè)置成當前時間,然后再執(zhí)行系統(tǒng)命令即可。希望這篇文章對你有所幫助!