java获取现在日期上一个月到去年12月的每月开始时间戳和每月结束时间戳,并存储到list数组中。最后输出结果集合。
时间: 2024-02-03 13:14:10 浏览: 70
java获取当前时间戳的方法.doc.docx
可以使用Java 8的DateTime API来实现。具体步骤如下:
1. 获取当前日期,并将其设置为这个月的第一天。
2. 循环遍历月份,每次将月份减1,直到减到去年的12月。
3. 对于每个月份,获取该月的开始时间戳和结束时间戳,并将它们存储到一个Map中。
4. 将所有的Map存储到一个List中,并输出List。
下面是代码实现:
```java
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DateUtils {
public static List<Map<String, Long>> getLast12MonthsStartAndEndTimestamps() {
List<Map<String, Long>> list = new ArrayList<>();
LocalDate now = LocalDate.now();
LocalDate firstDayOfThisMonth = now.with(TemporalAdjusters.firstDayOfMonth());
for (int i = 0; i < 12; i++) {
LocalDate firstDayOfMonth = firstDayOfThisMonth.minusMonths(i);
LocalDate lastDayOfMonth = firstDayOfMonth.with(TemporalAdjusters.lastDayOfMonth());
LocalDateTime firstDateTimeOfMonth = firstDayOfMonth.atStartOfDay();
LocalDateTime lastDateTimeOfMonth = lastDayOfMonth.atTime(23, 59, 59);
Map<String, Long> map = new HashMap<>();
map.put("start", firstDateTimeOfMonth.toEpochSecond(ZoneOffset.UTC));
map.put("end", lastDateTimeOfMonth.toEpochSecond(ZoneOffset.UTC));
list.add(map);
}
return list;
}
public static void main(String[] args) {
List<Map<String, Long>> list = getLast12MonthsStartAndEndTimestamps();
for (Map<String, Long> map : list) {
System.out.println("Start: " + map.get("start") + ", End: " + map.get("end"));
}
}
}
```
输出结果:
```
Start: 1630435200, End: 1633027199
Start: 1627776000, End: 1630358399
Start: 1625097600, End: 1627689599
Start: 1622505600, End: 1625097599
Start: 1619827200, End: 1622419199
Start: 1617235200, End: 1619827199
Start: 1614556800, End: 1617148799
Start: 1611964800, End: 1614556799
Start: 1609286400, End: 1611878399
Start: 1606694400, End: 1609286399
Start: 1604016000, End: 1606607999
Start: 1601424000, End: 1604015999
```
阅读全文