diff --git a/src/org/redkale/source/Range.java b/src/org/redkale/source/Range.java
index 02f3d490a..34b986586 100644
--- a/src/org/redkale/source/Range.java
+++ b/src/org/redkale/source/Range.java
@@ -9,7 +9,7 @@ import java.util.function.*;
/**
*
- * 包含两边的值
+ * 包含两边的值
*
* 详情见: https://redkale.org
*
@@ -22,6 +22,34 @@ public interface Range extends java.io.Serializable, Predi
public E getMax();
+ public static ByteRange crreate(byte min, byte max) {
+ return new ByteRange(min, max);
+ }
+
+ public static ShortRange crreate(short min, short max) {
+ return new ShortRange(min, max);
+ }
+
+ public static IntRange crreate(int min, int max) {
+ return new IntRange(min, max);
+ }
+
+ public static LongRange crreate(long min, long max) {
+ return new LongRange(min, max);
+ }
+
+ public static FloatRange crreate(float min, float max) {
+ return new FloatRange(min, max);
+ }
+
+ public static DoubleRange crreate(double min, double max) {
+ return new DoubleRange(min, max);
+ }
+
+ public static StringRange crreate(String min, String max) {
+ return new StringRange(min, max);
+ }
+
public static final class ByteRange implements Range {
private Byte min = Byte.MIN_VALUE;
diff --git a/src/org/redkale/util/Utility.java b/src/org/redkale/util/Utility.java
index e8f55f2b3..bc6d57130 100644
--- a/src/org/redkale/util/Utility.java
+++ b/src/org/redkale/util/Utility.java
@@ -430,6 +430,21 @@ public final class Utility {
return ld.atStartOfDay(zid).toInstant().toEpochMilli();
}
+ /**
+ * 获取时间点所在月份的最后一天
+ *
+ * @param time 指定时间
+ *
+ * @return 毫秒数
+ */
+ public static long monthLastDay(long time) {
+ ZoneId zid = ZoneId.systemDefault();
+ Instant instant = Instant.ofEpochMilli(time);
+ LocalDate ld = instant.atZone(zid).toLocalDate();
+ ld = ld.withDayOfMonth(ld.lengthOfMonth());
+ return ld.atStartOfDay(zid).toInstant().toEpochMilli();
+ }
+
/**
* 将字节数组转换为16进制字符串
*