我正在创建一个JSP站点,在其中我有点挣扎 我正在使用bash来ping IP-并为最后一次更改设置时间戳 Bash将其设置为:
date "+%Y-%m-%d %H:%M:%S
如何设置此时间戳记少于24小时的天气? 如果VPN在不到24小时前被取消连接,则含义是-标记为黄色文本。
答案 0 :(得分:1)
由于您标记了Java问题,所以我假设您想在JSP中使用Java进行此操作。
ZoneId bashZone = ZoneId.of("Europe/Copenhagen");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
String timestampString = "2018-11-08 00:07:22";
ZonedDateTime timestamp = LocalDateTime.parse(timestampString, formatter)
.atZone(bashZone);
if (timestamp.isBefore(ZonedDateTime.now(bashZone).minusHours(24))) {
System.out.println(timestampString + " is more than 24 hours ago");
} else {
System.out.println(timestampString + " is *not* more than 24 hours ago");
}
我刚才运行代码时,输出为:
2018-11-08 00:07:22是不是超过24小时前
如果您的bash并非欧洲/哥本哈根,请替换您的bash使用的时区。如果您相信JVM时区设置是一致的,则可以使用ZoneId.systemDefault()
。它并不总是如此,此外,甚至可以从运行在同一JVM中的另一个程序随时更改,因此非常脆弱。
java.time是现代的Java日期和时间API,自2014年以来已取代了旧的日期时间类Date
,SimpleDateFormat
等。旧的类设计不好,所以我建议您使用现代的类。
链接: Oracle tutorial: Date Time解释了如何使用java.time
。
答案 1 :(得分:0)
将String时间戳解析为LocalDateTime
。
您可以使用LocalDateTime方法检查您的日期是否早于24小时。
String str = "2018-01-20 11:32:53";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date = LocalDateTime.parse(str, dtf);
return date.plus(1, ChronoUnit.DAYS).isBefore(LocalDateTime.now());