Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f16ff77

Browse files
committed
feat: add HLLUtils.java
添加日期操作工具类
1 parent 5531852 commit f16ff77

File tree

2 files changed

+85
-1
lines changed

2 files changed

+85
-1
lines changed

‎java/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ dependencies {
1414
testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.2'
1515
compile group: 'redis.clients', name: 'jedis', version: '3.1.0'
1616
compile group: 'commons-codec', name: 'commons-codec', version: '1.13'
17-
17+
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'
1818
}

‎java/src/main/java/utils/HLLUtils.java

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package utils;
2+
3+
import org.apache.commons.lang3.time.DateUtils;
4+
5+
import java.text.SimpleDateFormat;
6+
import java.util.*;
7+
import java.util.stream.Collectors;
8+
9+
10+
public class HLLUtils {
11+
public static String TIME_FORMAT = "yyyyMMddHHmm";
12+
private static String TIME_FORMAT_MONTH_DAY = "MMdd";
13+
private static String TIME_FORMAT_DAY_MINUTES = "MMddHHmm";
14+
private static String TIME_FORMAT_DAY_HOURS = "MMddHH";
15+
static SimpleDateFormat FORMAT_MONTH_DAY = new SimpleDateFormat(TIME_FORMAT_MONTH_DAY);
16+
static SimpleDateFormat FORMAT_DAY_HOURS = new SimpleDateFormat(TIME_FORMAT_DAY_HOURS);
17+
static SimpleDateFormat FORMAT_DAY_MINUTES = new SimpleDateFormat(TIME_FORMAT_DAY_MINUTES);
18+
19+
public static List<String> parse(Date d1, Date d2) {
20+
ArrayList list;
21+
if (d1.compareTo(d2) == 0) {
22+
return Collections.emptyList();
23+
}
24+
25+
// if less than an hour, sum all minutes
26+
long delta = d2.getTime() - d1.getTime();
27+
if (delta == 0) {
28+
return Collections.emptyList();
29+
}
30+
if (delta < DateUtils.MILLIS_PER_HOUR) {
31+
int minutesDiff = (int) (delta / DateUtils.MILLIS_PER_MINUTE);
32+
list = new ArrayList<String>();
33+
Date date1Increment = d1;
34+
while (d2.compareTo(date1Increment) > 0 && minutesDiff > 0) {
35+
list.add(FORMAT_DAY_MINUTES.format(date1Increment));
36+
date1Increment = DateUtils.addMinutes(date1Increment, 1);
37+
}
38+
// if less than an day, trim hours sum all, pass minutes part
39+
} else if (delta < DateUtils.MILLIS_PER_DAY) {
40+
list = new ArrayList<String>();
41+
Date dateLastPortionHour = DateUtils.truncate(d2, Calendar.HOUR_OF_DAY);
42+
list.addAll(parse(dateLastPortionHour, d2));
43+
long delta2 = dateLastPortionHour.getTime() - d1.getTime();
44+
int hoursDiff = (int) (delta2 / DateUtils.MILLIS_PER_HOUR);
45+
Date date1Increment = DateUtils.addHours(dateLastPortionHour, -1 * hoursDiff);
46+
while (dateLastPortionHour.compareTo(date1Increment) > 0 && hoursDiff > 0) {
47+
list.add(FORMAT_DAY_HOURS.format(date1Increment));
48+
date1Increment = DateUtils.addHours(date1Increment, 1);
49+
}
50+
list.addAll(parse(d1, DateUtils.addHours(dateLastPortionHour, -1 * hoursDiff)));
51+
} else {
52+
list = new ArrayList<String>();
53+
Date dateLastPortionDay = DateUtils.truncate(d2, Calendar.DAY_OF_MONTH);
54+
list.addAll(parse(dateLastPortionDay, d2));
55+
long delta2 = dateLastPortionDay.getTime() - d1.getTime();
56+
// if less than an month, trim days sum all, pass hours part
57+
int daysDiff = (int) (delta2 / DateUtils.MILLIS_PER_DAY);
58+
// Date date1Increment = d1;
59+
Date date1Increment = DateUtils.addDays(dateLastPortionDay, -1 * daysDiff);
60+
while (dateLastPortionDay.compareTo(date1Increment) > 0 && daysDiff > 0) {
61+
list.add(FORMAT_MONTH_DAY.format(date1Increment));
62+
date1Increment = DateUtils.addDays(date1Increment, 1);
63+
}
64+
list.addAll(parse(d1, DateUtils.addDays(dateLastPortionDay, -1 * daysDiff)));
65+
}
66+
return list;
67+
}
68+
69+
public static List<String> getLastMinutes(Date date, int minutes) {
70+
return parse(DateUtils.addMinutes(date, -1 * minutes), date);
71+
}
72+
73+
public static List<String> getLastHours(Date date, int hours) {
74+
return parse(DateUtils.addHours(date, -1 * hours), date);
75+
}
76+
77+
public static List<String> getLastDays(Date date, int days) {
78+
return parse(DateUtils.addDays(date, -1 * days), date);
79+
}
80+
81+
public static List<String> addPrefix(List<String> keys, String prefix) {
82+
return keys.stream().map(key -> prefix + key).collect(Collectors.toList());
83+
}
84+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /