gpt4 book ai didi

java - 基于日期按小时/半小时的 Bin Java 时间戳

转载 作者:行者123 更新时间:2023-11-29 05:00:14 26 4
gpt4 key购买 nike

我有一个 hashmap,其中的键为 date_site,示例键:2015-08-24_Demo-Site,值:08:30,然后是按时间排序的键。我希望将一小时内按时间间隔分类的值作为一份报告,半小时作为另一份报告。

例如,

键:2015-08-24_cimp,值:16:13、16:20、16:34、18:49、18:57、22:33

应该是小时报告中的数据点:

[2015-08-24, "cimp", 16-17, 3], [2015-08-24, "cimp", 18-19, 2], [2015-08-24, "cimp", 21-22, 1]

我试图创建一个日历日期时间,然后检查实例是否在该日期之后,但我有点卡住了,想知道是否有更简单的方法从 HashMap 中进行分类。

我在遍历 HashMap 中的键和值时调用该函数:

for (Map.Entry<String, String> entry : daySiteMap.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value:" + entry.getValue());
compareTime(entry.getValue());
}



private static ArrayList<String> compareTimeHour(String time) {
String[] times = time.split(",");
ArrayList<String> datas = new ArrayList<String>();

if(times.length == 1){
Integer hour = Integer.parseInt(times[0].split(":")[0].trim());
Integer hour1 = hour+1;
datas.add(hour.toString() + "-" + hour1.toString());
datas.add("1");
}
else{
for (int i = 0; i < times.length; i++) {
Calendar check = Calendar.getInstance();
check.set(Calendar.HOUR_OF_DAY, Integer.parseInt(times[i].split(":")[0].trim()));
check.set(Calendar.MINUTE, Integer.parseInt(times[i].split(":")[1].trim()));
boolean checking = true;
Integer startHour = 1;
Integer startMin = 0;
while(checking){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, startHour);
cal.set(Calendar.MINUTE, startMin);
checking = Calendar.getInstance().before(check);
startHour+=1;
startMin+=30;
}
}
}
return datas;

最佳答案

以下是如何执行类似操作的示例:

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Map<Date, String> activityMap = new TreeMap<Date, String>();
activityMap.put(fmt.parse("2015-04-01 09:00:00"), "Show up at work");
activityMap.put(fmt.parse("2015-04-01 09:05:00"), "Get coffee");
activityMap.put(fmt.parse("2015-04-01 09:15:00"), "Read the news");
activityMap.put(fmt.parse("2015-04-01 10:02:00"), "Smoke break");
activityMap.put(fmt.parse("2015-04-01 10:38:00"), "Watercooler break");
activityMap.put(fmt.parse("2015-04-01 11:45:00"), "Lunch break");

Map<Date, List<String>> dateHourMap = new TreeMap<Date, List<String>>();
Calendar cal = Calendar.getInstance();
for (Map.Entry<Date, String> activity : activityMap.entrySet()) {
cal.setTime(activity.getKey());
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
cal.clear();
cal.set(year, month, day, hour, 0);
Date dateHour = cal.getTime();
List<String> list = dateHourMap.get(dateHour);
if (list == null)
dateHourMap.put(dateHour, list = new ArrayList<String>());
list.add(String.format("%02d:%02d %s", minute, second, activity.getValue()));
}

fmt = new SimpleDateFormat("yyyy-MM-dd HH");
for (Map.Entry<Date, List<String>> entry : dateHourMap.entrySet())
System.out.println(fmt.format(entry.getKey()) + ": " + entry.getValue());

输出

2015-04-01 09: [00:00 Show up at work, 05:00 Get coffee, 15:00 Read the news]
2015-04-01 10: [02:00 Smoke break, 38:00 Watercooler break]
2015-04-01 11: [45:00 Lunch break]

关于java - 基于日期按小时/半小时的 Bin Java 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32341240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com