用java代码 simpledateFormat 使用嵌套map获取当前时间对应时间段的数值
时间: 2024-05-01 14:21:25 浏览: 51
假设你有以下的嵌套Map,表示不同时间段的起始和结束时间,以及对应的数值:
```java
Map<String, Map<String, Integer>> timeRanges = new HashMap<>();
timeRanges.put("range1", new HashMap<String, Integer>() {{
put("start", 0);
put("end", 3);
put("value", 10);
}});
timeRanges.put("range2", new HashMap<String, Integer>() {{
put("start", 3);
put("end", 6);
put("value", 20);
}});
timeRanges.put("range3", new HashMap<String, Integer>() {{
put("start", 6);
put("end", 9);
put("value", 30);
}});
timeRanges.put("range4", new HashMap<String, Integer>() {{
put("start", 9);
put("end", 12);
put("value", 40);
}});
```
然后你可以使用SimpleDateFormat类来获取当前时间对应的小时数,再根据这个小时数来判断当前时间属于哪个时间段,并获取对应的数值:
```java
SimpleDateFormat sdf = new SimpleDateFormat("HH");
String currentHour = sdf.format(new Date());
int hour = Integer.parseInt(currentHour);
String timeRange = "";
int value = 0;
for (Map.Entry<String, Map<String, Integer>> entry : timeRanges.entrySet()) {
Map<String, Integer> range = entry.getValue();
int start = range.get("start");
int end = range.get("end");
if (hour >= start && hour < end) {
timeRange = entry.getKey();
value = range.get("value");
break;
}
}
System.out.println("当前时间段:" + timeRange + ",对应数值:" + value);
```
这段代码首先创建了一个SimpleDateFormat对象,用来格式化当前时间,获取当前小时数。然后遍历嵌套Map,找到当前时间属于哪个时间段,并获取对应的数值。最后输出结果。
阅读全文