Files
pkAssistant/src/main/java/vvpkassistant/Tools/VVTools.java
2025-08-01 13:59:30 +08:00

129 lines
4.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package vvpkassistant.Tools;
import lombok.Data;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
/************************
* 工具类 *
************************/
public class VVTools {
// 获取当前时间戳
public static long currentTimeStamp() {
long timeStamp = Calendar.getInstance().getTimeInMillis() / 1000;
return timeStamp;
}
// 查询当天所有的
public static Map<String,Long> startAndEndTimeStampForToday() {
// 获取当前日期(不含时间)
LocalDate today = LocalDate.now();
// 当天的 00:00:00
LocalDateTime startOfDay = today.atStartOfDay();
long startTimestamp = startOfDay.atZone(ZoneId.systemDefault()).toEpochSecond();
// 当天的 23:59:59
LocalDateTime endOfDay = today.atTime(23, 59, 59);
long endTimestamp = endOfDay.atZone(ZoneId.systemDefault()).toEpochSecond();
Map<String,Long> result = new HashMap<>();
result.put("start",startTimestamp);
result.put("end", endTimestamp);
return result;
}
/**
* 获取当前时间字符串
* @param pattern 时间格式
* @return 返回当前时间
*/
public static String getCurrentTime(String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
return LocalDateTime.now().format(formatter);
}
/**
* 替换替换字符串
* @param wordA 原文本
* @param wordB 需要替换的文本
*/
public static String replaceChar(String wordA, char wordB) {
if (wordA == null || wordA.length() <= 2) {
return wordA; // 如果字符串太短(<=2个字符直接返回
}
char[] chars = wordA.toCharArray();
Arrays.fill(chars, 1, chars.length - 1, wordB);
return new String(chars);
}
/**
* 判断时间戳是否在当天内(基于系统默认时区)
* @param timestamp 毫秒级时间戳
* @return true-在当天内false-不在当天内
*/
public static boolean isTimestampInToday(long timestamp) {
// 1. 获取当前时间戳对应的日期(系统默认时区)
LocalDate today = LocalDate.now();
// 2. 将目标时间戳转为日期(同一时区)
LocalDate targetDate = Instant.ofEpochMilli(timestamp)
.atZone(ZoneId.systemDefault())
.toLocalDate();
// 3. 比较日期是否相同
return targetDate.isEqual(today);
}
// 根据传入的时间戳。计算出当天的开始时间和结束时间的时间戳
public static Map<String, Long> getDayStartAndEndTimestamp(long timestamp) {
// 将10位时间戳转换为LocalDateTime
Instant instant = Instant.ofEpochSecond(timestamp);
LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
// 获取当天的LocalDate
LocalDate date = dateTime.toLocalDate();
// 计算当天的开始时间00:00:00
LocalDateTime startOfDay = date.atStartOfDay();
long startTimestamp = startOfDay.atZone(ZoneId.systemDefault()).toEpochSecond();
// 计算当天的结束时间23:59:59
LocalDateTime endOfDay = date.atTime(23, 59, 59);
long endTimestamp = endOfDay.atZone(ZoneId.systemDefault()).toEpochSecond();
// 创建并返回Map
Map<String, Long> result = new HashMap<>();
result.put("start", startTimestamp);
result.put("end", endTimestamp);
return result;
}
// 计算两个时间戳之间的小时数量
public static long calculateHoursRound(long expireTime, long currentTime) {
if (expireTime <= currentTime) return 0;
long diffSeconds = expireTime - currentTime;
return diffSeconds / 3600;
}
// 返还积分用不足1小时忽略
public static long calculateHoursFloor(long expireTime, long currentTime) {
if (expireTime <= currentTime) return 0;
return (expireTime - currentTime) / 3600;
}
}