1、此处主要是记录处理Linux的时间设置问题
修改系统时间,将修改后的系统时间更新到硬件时钟中
直接一行一行执行指令好像没用(具体原因暂未分析),但是写在sh文件中,再执行是生效的
public static void main(String[] args) throws IOException {
String dateTimeStr = "2023-02-21 12:12:12";
String osName = System.getProperty("os.name");
System.out.println("osName = " + osName);
if (osName.matches("^(?i)Linux.*$")){
FileWriter excutefw = new FileWriter("/usr/updateSysAutoTime.sh");
BufferedWriter excutebw=new BufferedWriter(excutefw);
excutebw.write("date -s \"" + dateTimeStr +"\"\r\n");
excutebw.write("hwclock -w -u");
excutebw.close();
excutefw.close();
String cmd_date ="sh /usr/updateSysAutoTime.sh";
Runtime.getRuntime().exec(cmd_date);
System.out.println("cmd :" + cmd_date + dateTimeStr);
System.out.println("linux date update ");
}else {
System.out.println("not in dealing");
}
}
2、判断两个时间字符串之间的差
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime1 = LocalDateTime.parse("2023-02-20 18:42:59", formatter);
LocalDateTime dateTime2 = LocalDateTime.parse("2023-02-21 14:30:32", formatter);
// 毫秒
long diffInMilli = java.time.Duration.between(dateTime1, dateTime2).toMillis();
// 秒
long diffInSeconds = java.time.Duration.between(dateTime1, dateTime2).getSeconds();
// 分钟:只会计算到分钟,秒数会忽略
long diffInMinutes = java.time.Duration.between(dateTime1, dateTime2).toMinutes();
//绝对值
long abs = Math.abs(diffInMinutes);