1.适配TSG 23.07及以上功能,添加数据传输统计指标,并输出至pushgateway。(GAL-409)
2.原URL参数domain从http_domain字段取值,更新为从common_server_domain字段取值。(GAL-410)
This commit is contained in:
89
src/test/java/com/zdjizhi/function/TimestampTest.java
Normal file
89
src/test/java/com/zdjizhi/function/TimestampTest.java
Normal file
@@ -0,0 +1,89 @@
|
||||
package com.zdjizhi.function;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.time.*;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class TimestampTest {
|
||||
|
||||
@Test
|
||||
public void timestampToDate() {
|
||||
System.out.println(getLocalDateTime(1693905281L, 0, "Asia/Shanghai"));
|
||||
System.out.println(getLocalDateTime(1693905281048L, 3, "Asia/Shanghai"));
|
||||
System.out.println(getLocalDateTime(1693905281048L, 6, "Asia/Shanghai"));
|
||||
System.out.println(getLocalDateTime(1693905281048L, 9, "UTC+03:00"));
|
||||
System.out.println(getZoneDateTime(1693905281L, 3, "Asia/Shanghai"));
|
||||
System.out.println(getZoneDateTime(1693905281048L, 6, "Asia/Shanghai"));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void timestampConversion() {
|
||||
long nanosTimestamp = 1630988475000000000L; // 纳秒级时间戳
|
||||
System.out.println("纳秒级时间戳: " + timestampToSeconds(nanosTimestamp));
|
||||
|
||||
long microsTimestamp = 1630988475000000L; // 微秒级时间戳
|
||||
System.out.println("微秒级时间戳: " + timestampToSeconds(microsTimestamp));
|
||||
|
||||
long millisTimestamp = 1693969952127L; // 微秒级时间戳
|
||||
System.out.println("毫秒级时间戳: " + timestampToSeconds(millisTimestamp));
|
||||
|
||||
long errorTimestamp = 169396995L; // 微秒级时间戳
|
||||
System.out.println("异常时间戳: " + timestampToSeconds(errorTimestamp));
|
||||
}
|
||||
|
||||
private Long timestampToSeconds(long timestamp) {
|
||||
int timestampLength = Long.toString(timestamp).length();
|
||||
switch (timestampLength) {
|
||||
case 13:
|
||||
return TimeUnit.MILLISECONDS.toSeconds(timestamp);
|
||||
case 16:
|
||||
return TimeUnit.MICROSECONDS.toSeconds(timestamp);
|
||||
case 19:
|
||||
return TimeUnit.NANOSECONDS.toSeconds(timestamp);
|
||||
default:
|
||||
// throw new RuntimeException("This timestamp:" + timestamp + " format is not nanosecond, microsecond, millisecond, or second");
|
||||
return timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
private String getLocalDateTime(Long timestamp, int precision, String timeZone) {
|
||||
boolean isMillis = String.valueOf(timestamp).length() > 10;
|
||||
String timePattern = "yyyy-MM-dd HH:mm:ss";
|
||||
if (precision > 0) {
|
||||
String s = String.join("", Collections.nCopies(precision, "S"));
|
||||
timePattern = String.join(".", timePattern, s);
|
||||
}
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(timePattern);
|
||||
|
||||
Instant instant;
|
||||
if (isMillis) {
|
||||
instant = Instant.ofEpochMilli(timestamp);
|
||||
} else {
|
||||
instant = Instant.ofEpochSecond(timestamp);
|
||||
}
|
||||
return LocalDateTime.ofInstant(instant, ZoneId.of(timeZone)).format(formatter);
|
||||
}
|
||||
|
||||
|
||||
private String getZoneDateTime(Long timestamp, int precision, String timeZone) {
|
||||
boolean isMillis = String.valueOf(timestamp).length() > 10;
|
||||
String timePattern = "yyyy-MM-dd'T'HH:mm:ss.";
|
||||
if (precision > 0) {
|
||||
String s = String.join("", Collections.nCopies(precision, "S"));
|
||||
timePattern = String.join("", timePattern, s, "XXX");
|
||||
}
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(timePattern);
|
||||
|
||||
Instant instant;
|
||||
if (isMillis) {
|
||||
instant = Instant.ofEpochMilli(timestamp);
|
||||
} else {
|
||||
instant = Instant.ofEpochSecond(timestamp);
|
||||
}
|
||||
return ZonedDateTime.ofInstant(instant, ZoneId.of(timeZone)).format(formatter);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user