|
|
@ -10,6 +10,12 @@ import java.net.URISyntaxException;
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
import java.nio.ByteBuffer;
|
|
|
|
import java.nio.ByteOrder;
|
|
|
|
import java.nio.ByteOrder;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
import java.time.Duration;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
|
|
|
import java.time.ZoneId;
|
|
|
|
|
|
|
|
import java.time.ZonedDateTime;
|
|
|
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
|
|
|
import java.time.format.DateTimeFormatterBuilder;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
@ -116,7 +122,67 @@ public class ProtocolTest {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return sb.toString();
|
|
|
|
return sb.toString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static String extractByPattern(String text, String regex) {
|
|
|
|
|
|
|
|
Pattern pattern = Pattern.compile(regex);
|
|
|
|
|
|
|
|
Matcher matcher = pattern.matcher(text);
|
|
|
|
|
|
|
|
return matcher.find() ? matcher.group(1) : null;
|
|
|
|
|
|
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 解析时间并计算秒差(一行核心代码)
|
|
|
|
|
|
|
|
// LocalDateTime time = (LocalDateTime) crmModel.getEntity().get("nextTime");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//if (time != null) {
|
|
|
|
|
|
|
|
// String formatted = time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
|
|
|
|
|
|
|
|
String formatted = "2025-08-29 18:58:00";
|
|
|
|
|
|
|
|
// 使用 formatted...
|
|
|
|
|
|
|
|
// 修复后的日期格式解析器(兼容带ss和不带ss的情况)
|
|
|
|
|
|
|
|
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
|
|
|
|
|
|
|
|
.appendPattern("yyyy-MM-dd HH:mm")
|
|
|
|
|
|
|
|
.optionalStart().appendPattern(":ss").optionalEnd() // 秒部分可选
|
|
|
|
|
|
|
|
.toFormatter();
|
|
|
|
|
|
|
|
ZoneId zone = ZoneId.systemDefault();
|
|
|
|
|
|
|
|
ZonedDateTime now = ZonedDateTime.now(zone);
|
|
|
|
|
|
|
|
ZonedDateTime targetTime = LocalDateTime.parse(formatted, formatter)
|
|
|
|
|
|
|
|
.atZone(zone);
|
|
|
|
|
|
|
|
// 计算时间差
|
|
|
|
|
|
|
|
Integer seconds = (int)Duration.between(now, targetTime).getSeconds();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
System.out.println("剩余秒数: " + seconds);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
byte[] data = new byte[]{0x00, (byte) 0xFF};
|
|
|
|
|
|
|
|
ByteBuffer buffer = ByteBuffer.wrap(data);
|
|
|
|
|
|
|
|
int value = buffer.getShort() & 0xFFFF; // 0x00FF -> 255
|
|
|
|
|
|
|
|
System.out.println(value); // 输出 ff
|
|
|
|
|
|
|
|
int maskedValue = value & 0x00FF; // 255 & 255 = 255 (0x00FF)
|
|
|
|
|
|
|
|
System.out.println(Integer.toHexString(maskedValue)); // 输出 ff
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String text = "您的设备【863998080814438】触发事件 事件类型为:【报警低】";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 提取设备ID
|
|
|
|
|
|
|
|
String deviceId = extractByPattern(text, "设备【(.*?)】");
|
|
|
|
|
|
|
|
System.out.println("设备ID: " + deviceId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 提取事件类型
|
|
|
|
|
|
|
|
String eventType = extractByPattern(text, "类型为:【(.*?)】");
|
|
|
|
|
|
|
|
System.out.println("事件类型: " + eventType);
|
|
|
|
|
|
|
|
LocalDateTime endDateTime = LocalDateTime.now();
|
|
|
|
|
|
|
|
LocalDateTime beginDateTime = endDateTime.minusMinutes(10);
|
|
|
|
|
|
|
|
// LocalDateTime beginDateTime = LocalDateTime.parse(beginTime, formatter);
|
|
|
|
|
|
|
|
// LocalDateTime endDateTime = LocalDateTime.parse(endTime, formatter);
|
|
|
|
|
|
|
|
// 提取设备ID
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long beginMillis = beginDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
|
|
|
|
|
|
|
|
long endMillis = endDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
|
|
|
|
|
|
|
|
System.out.println(beginMillis);
|
|
|
|
|
|
|
|
System.out.println(endMillis);
|
|
|
|
String dsada=null;
|
|
|
|
String dsada=null;
|
|
|
|
System.out.println(dsada.startsWith("https"));
|
|
|
|
System.out.println(dsada.startsWith("https"));
|
|
|
|
System.out.println(generateWriteCommand(0x0100,ByteBuffer.allocate(4)
|
|
|
|
System.out.println(generateWriteCommand(0x0100,ByteBuffer.allocate(4)
|
|
|
|