cl
2024-07-11 13a2a47e159db5e17d1c551805436d9ae30480ef
提交 | 用户 | 时间
0ca254 1 package com.jcdm.main.plcserver.util;
A 2
3 import java.text.ParseException;
4 import java.text.SimpleDateFormat;
5 import java.time.LocalDateTime;
6 import java.time.format.DateTimeFormatter;
7 import java.util.Date;
8 import java.util.Locale;
9 import java.util.TimeZone;
10 import java.util.regex.Matcher;
11 import java.util.regex.Pattern;
12
13 public class TimeUtil {
14     public static void main(String[] args) {
15         String dateString = "Tue May 14 18:25:18 CST 2024";
16 //        System.out.println(test(dateString));
17 //        String str = "OP330";
18 //        System.out.println(str.substring(0,5));
19 //        String tightenData = "[9.077463,12.0,OK,OK]";
20 //        tightenData = tightenData.replace("[", "").replace("]", "").replace(" ", "");
21 //        String[] tightenDataParts = tightenData.split(",");
22 //        for (int i = 0; i < tightenDataParts.length; i++) {
23 //            System.out.println(tightenDataParts[i]);
24 //        }
25         String originalString = "[3.6,7.8,OK,OK]";
26         String modifiedString = originalString.replaceFirst("OK", "NG");
27         System.out.println(modifiedString); // 输出: [3.6,7.8,NG,OK]
28 //        System.out.println(isNumberInRange(7.7, 7.5, 8.5));
29 //        System.out.println(test( stringProcessing("DateTime{utcTime=133601559184960000, javaDate=Tue May 14 18:25:18 CST 2024}")));
30     }
31
32     public static String replaceNumber(String input) {
33         String regex = ",(\\d+),";
34         String replacement = ",NG,";
35
36         Pattern pattern = Pattern.compile(regex);
37         Matcher matcher = pattern.matcher(input);
38
39         return matcher.replaceAll(replacement);
40     }
41
42     // 检查一个数是否在两个数定义的区间内(不包含边界)
43     public static boolean isNumberInRange(Double number, Double start, Double end) {
44         return number >= start && number <= end;
45     }
46
47     public static String stringProcessing(String dateTimeStr){
48         String result = "";
49         // 找到 "javaDate=" 的位置
50         int javaDateIndex = dateTimeStr.indexOf("javaDate=");
51         if (javaDateIndex != -1) {
52             // 从 "javaDate=" 后面开始截取
53             javaDateIndex += "javaDate=".length();
54
55             // 找到日期时间字符串结束的位置,这里假设是字符串的结尾或者空格的位置
56             int endIndex = dateTimeStr.indexOf('}', javaDateIndex);
57             if (endIndex == -1) {
58                 // 如果没有找到空格,就取到字符串的末尾
59                 endIndex = dateTimeStr.length();
60             }
61             // 使用 substring 方法截取日期时间部分
62             String dateTimePart = dateTimeStr.substring(javaDateIndex, endIndex);
63             result = dateTimePart;
64         } else {
65             System.out.println("javaDate= not found in the string.");
66         }
67         return result;
68     }
69
70     public static String getTimestamp(String param){
71         String result = "";
72         // 定义日期时间格式和时区
73         SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
74         sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // CST通常表示中国标准时间,即东八区
75
76         try {
77             // 解析日期时间字符串
78             Date date = sdf.parse("Mon Jan 01 17:05:23 CST 2024");
79
80             // 获取时间戳(毫秒)
81             long timestamp = date.getTime();
82
83             // 输出13位时间戳
84             result = String.valueOf(timestamp);
85
86         } catch (ParseException e) {
87             e.printStackTrace();
88         }
89         return result;
90     }
91
92     public static String getYyyyDdMm(String inputDate){
93         String outputPattern = "yyyy-MM-dd HH:mm:ss";
94
95         // 定义一个解析器,用于忽略时区(仅作为示例,可能需要调整以处理不同的输入)
96         SimpleDateFormat parser = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
97         parser.setLenient(false); // 设置不宽松,以严格匹配格式
98
99         // 解析日期字符串
100         Date date = null;
101         try {
102             date = parser.parse(inputDate);
103         } catch (ParseException e) {
104             e.printStackTrace();
105         }
106
107         // 定义一个格式化器,用于输出所需的格式
108         SimpleDateFormat formatter = new SimpleDateFormat(outputPattern);
109
110         // 格式化日期
111         String outputDate = formatter.format(date);
112         return outputDate;
113     }
114
115     public static String test(String param){
116         String str = "";
117         // 创建一个SimpleDateFormat对象来解析输入的日期字符串(假设CST为中国标准时间)
118         SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
119         inputFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); // 设置为中国时区
120
121         Date date = null;
122         try {
123             date = inputFormat.parse(param);
124         } catch (ParseException e) {
125             e.printStackTrace();
126         }
127
128         // 创建一个SimpleDateFormat对象来格式化日期为UTC时间
129         SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
130         outputFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // 设置为UTC时区
131
132         // 格式化日期
133         if (date != null) {
134             str = outputFormat.format(date);
135         }
136         return str;
137     }
138
139
140
141 }