如何用java实现根据当前时间戳和给出的时间范围(如1y,1m,1d)算出前后时间范围内的时间戳
时间: 2023-05-22 19:02:07 浏览: 176
可以使用 Java 中的 Calendar 类来实现这个功能。首先,将当前时间戳转换为 Calendar 对象,然后根据给出的时间范围计算出前后时间的 Calendar 对象,最后将它们转换为时间戳即可。
以下是示例代码:
```java
import java.util.Calendar;
public class TimeRangeCalculator {
public static void main(String[] args) {
long currentTimestamp = System.currentTimeMillis() / 1000; // 当前时间戳,单位为秒
String timeRange = "1y"; // 时间范围,格式为数字+单位(y-年,m-月,d-日)
Calendar currentCalendar = Calendar.getInstance();
currentCalendar.setTimeInMillis(currentTimestamp * 1000);
Calendar startCalendar = (Calendar) currentCalendar.clone();
Calendar endCalendar = (Calendar) currentCalendar.clone();
int amount = Integer.parseInt(timeRange.substring(0, timeRange.length() - 1));
char unit = timeRange.charAt(timeRange.length() - 1);
switch (unit) {
case 'y':
startCalendar.add(Calendar.YEAR, -amount);
endCalendar.add(Calendar.YEAR, amount);
break;
case 'm':
startCalendar.add(Calendar.MONTH, -amount);
endCalendar.add(Calendar.MONTH, amount);
break;
case 'd':
startCalendar.add(Calendar.DAY_OF_MONTH, -amount);
endCalendar.add(Calendar.DAY_OF_MONTH, amount);
break;
default:
System.out.println("Invalid time unit!");
return;
}
long startTimestamp = startCalendar.getTimeInMillis() / 1000;
long endTimestamp = endCalendar.getTimeInMillis() / 1000;
System.out.println("Start timestamp: " + startTimestamp);
System.out.println("End timestamp: " + endTimestamp);
}
}
```
例如,如果当前时间戳为 1631241600(2021 年 9 月 10 日),时间范围为 "1y",则输出结果为:
```
Start timestamp: 1599676800
End timestamp: 1662806400
```
即前后一年的时间范围为 1599676800(2020 年 9 月 10 日)到 1662806400(2022 年 9 月 10 日)的时间戳。
阅读全文