Commit eeacdfb1ce3a475c6a741bf2e420ec1438bfa8e0
1 parent
d00e711b
feat(*): 优化代码
- 优化代码
Showing
3 changed files
with
382 additions
and
384 deletions
fw-hestia-common/src/main/java/cn/fw/hestia/common/utils/CoordinateTransformUtil.kt
1 | -package cn.fw.hestia.common.utils; | |
1 | +package cn.fw.hestia.common.utils | |
2 | 2 | |
3 | -import lombok.AccessLevel; | |
4 | -import lombok.NoArgsConstructor; | |
3 | +import kotlin.math.* | |
5 | 4 | |
6 | 5 | /** |
7 | 6 | * 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具 |
8 | - * <p> | |
7 | + * | |
8 | + * | |
9 | 9 | * create at 2018-10-09 |
10 | 10 | * |
11 | 11 | * @author kurisu |
12 | 12 | */ |
13 | -@NoArgsConstructor(access = AccessLevel.PRIVATE) | |
14 | -public final class CoordinateTransformUtil { | |
15 | - | |
13 | +object CoordinateTransformUtil { | |
16 | 14 | // π |
17 | - private static double PI = Math.PI; | |
18 | - private static double X_PI = PI * 3000.0 / 180.0; | |
15 | + private const val PI = Math.PI | |
16 | + private const val X_PI = PI * 3000.0 / 180.0 | |
17 | + | |
19 | 18 | // 长半轴 |
20 | - private static double A = 6378245.0; | |
19 | + private const val A = 6378245.0 | |
20 | + | |
21 | 21 | // 扁率 |
22 | - private static double EE = 0.00669342162296594323; | |
22 | + private const val EE = 0.006693421622965943 | |
23 | 23 | |
24 | 24 | /** |
25 | 25 | * 百度坐标系(BD-09)转WGS坐标 |
... | ... | @@ -28,9 +28,9 @@ public final class CoordinateTransformUtil { |
28 | 28 | * @param lat 百度坐标经度 |
29 | 29 | * @return WGS84坐标数组 |
30 | 30 | */ |
31 | - public static double[] bd09toWgs84(double lng, double lat) { | |
32 | - double[] gcj = bd09toGcj02(lng, lat); | |
33 | - return gcj02toWgs84(gcj[0], gcj[1]); | |
31 | + fun bd09toWgs84(lng: Double, lat: Double): DoubleArray { | |
32 | + val gcj = bd09toGcj02(lng, lat) | |
33 | + return gcj02toWgs84(gcj[0], gcj[1]) | |
34 | 34 | } |
35 | 35 | |
36 | 36 | /** |
... | ... | @@ -40,9 +40,9 @@ public final class CoordinateTransformUtil { |
40 | 40 | * @param lat WGS84坐标系的纬度 |
41 | 41 | * @return 百度坐标数组 |
42 | 42 | */ |
43 | - public static double[] wgs84toBd09(double lng, double lat) { | |
44 | - double[] gcj = wgs84toGcj02(lng, lat); | |
45 | - return gcj02toBd09(gcj[0], gcj[1]); | |
43 | + fun wgs84toBd09(lng: Double, lat: Double): DoubleArray { | |
44 | + val gcj = wgs84toGcj02(lng, lat) | |
45 | + return gcj02toBd09(gcj[0], gcj[1]) | |
46 | 46 | } |
47 | 47 | |
48 | 48 | /** |
... | ... | @@ -53,12 +53,12 @@ public final class CoordinateTransformUtil { |
53 | 53 | * @param lat 火星坐标纬度 |
54 | 54 | * @return 百度坐标数组 |
55 | 55 | */ |
56 | - public static double[] gcj02toBd09(double lng, double lat) { | |
57 | - double z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * X_PI); | |
58 | - double theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * X_PI); | |
59 | - double bd_lng = z * Math.cos(theta) + 0.0065; | |
60 | - double bd_lat = z * Math.sin(theta) + 0.006; | |
61 | - return new double[]{bd_lng, bd_lat}; | |
56 | + fun gcj02toBd09(lng: Double, lat: Double): DoubleArray { | |
57 | + val z = sqrt(lng * lng + lat * lat) + 0.00002 * sin(lat * X_PI) | |
58 | + val theta = atan2(lat, lng) + 0.000003 * cos(lng * X_PI) | |
59 | + val bd_lng = z * cos(theta) + 0.0065 | |
60 | + val bd_lat = z * sin(theta) + 0.006 | |
61 | + return doubleArrayOf(bd_lng, bd_lat) | |
62 | 62 | } |
63 | 63 | |
64 | 64 | /** |
... | ... | @@ -69,14 +69,14 @@ public final class CoordinateTransformUtil { |
69 | 69 | * @param bd_lat 百度坐标经度 |
70 | 70 | * @return 火星坐标数组 |
71 | 71 | */ |
72 | - public static double[] bd09toGcj02(double bd_lon, double bd_lat) { | |
73 | - double x = bd_lon - 0.0065; | |
74 | - double y = bd_lat - 0.006; | |
75 | - double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI); | |
76 | - double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI); | |
77 | - double gg_lng = z * Math.cos(theta); | |
78 | - double gg_lat = z * Math.sin(theta); | |
79 | - return new double[]{gg_lng, gg_lat}; | |
72 | + fun bd09toGcj02(bd_lon: Double, bd_lat: Double): DoubleArray { | |
73 | + val x = bd_lon - 0.0065 | |
74 | + val y = bd_lat - 0.006 | |
75 | + val z = sqrt(x * x + y * y) - 0.00002 * sin(y * X_PI) | |
76 | + val theta = atan2(y, x) - 0.000003 * cos(x * X_PI) | |
77 | + val gg_lng = z * cos(theta) | |
78 | + val gg_lat = z * sin(theta) | |
79 | + return doubleArrayOf(gg_lng, gg_lat) | |
80 | 80 | } |
81 | 81 | |
82 | 82 | /** |
... | ... | @@ -86,21 +86,22 @@ public final class CoordinateTransformUtil { |
86 | 86 | * @param lat WGS84坐标系的纬度 |
87 | 87 | * @return 火星坐标数组 |
88 | 88 | */ |
89 | - public static double[] wgs84toGcj02(double lng, double lat) { | |
89 | + fun wgs84toGcj02(lng: Double, lat: Double): DoubleArray { | |
90 | 90 | if (out_of_china(lng, lat)) { |
91 | - return new double[]{lng, lat}; | |
91 | + return doubleArrayOf(lng, lat) | |
92 | 92 | } |
93 | - double dlat = transformLat(lng - 105.0, lat - 35.0); | |
94 | - double dlng = transformLng(lng - 105.0, lat - 35.0); | |
95 | - double radlat = lat / 180.0 * PI; | |
96 | - double magic = Math.sin(radlat); | |
97 | - magic = 1 - EE * magic * magic; | |
98 | - double sqrtmagic = Math.sqrt(magic); | |
99 | - dlat = (dlat * 180.0) / ((A * (1 - EE)) / (magic * sqrtmagic) * PI); | |
100 | - dlng = (dlng * 180.0) / (A / sqrtmagic * Math.cos(radlat) * PI); | |
101 | - double mglat = lat + dlat; | |
102 | - double mglng = lng + dlng; | |
103 | - return new double[]{mglng, mglat}; | |
93 | + var dlat = transformLat(lng - 105.0, lat - 35.0) | |
94 | + var dlng = transformLng(lng - 105.0, lat - 35.0) | |
95 | + val radlat = lat / 180.0 * PI | |
96 | + var magic = sin(radlat) | |
97 | + magic = 1 - EE * magic * magic | |
98 | + val sqrtmagic = sqrt(magic) | |
99 | + dlat = | |
100 | + (dlat * 180.0) / ((A * (1 - EE)) / (magic * sqrtmagic) * PI) | |
101 | + dlng = (dlng * 180.0) / (A / sqrtmagic * cos(radlat) * PI) | |
102 | + val mglat = lat + dlat | |
103 | + val mglng = lng + dlng | |
104 | + return doubleArrayOf(mglng, mglat) | |
104 | 105 | } |
105 | 106 | |
106 | 107 | /** |
... | ... | @@ -110,21 +111,22 @@ public final class CoordinateTransformUtil { |
110 | 111 | * @param lat 火星坐标系纬度 |
111 | 112 | * @return WGS84坐标数组 |
112 | 113 | */ |
113 | - public static double[] gcj02toWgs84(double lng, double lat) { | |
114 | + fun gcj02toWgs84(lng: Double, lat: Double): DoubleArray { | |
114 | 115 | if (out_of_china(lng, lat)) { |
115 | - return new double[]{lng, lat}; | |
116 | + return doubleArrayOf(lng, lat) | |
116 | 117 | } |
117 | - double dlat = transformLat(lng - 105.0, lat - 35.0); | |
118 | - double dlng = transformLng(lng - 105.0, lat - 35.0); | |
119 | - double radlat = lat / 180.0 * PI; | |
120 | - double magic = Math.sin(radlat); | |
121 | - magic = 1 - EE * magic * magic; | |
122 | - double sqrtmagic = Math.sqrt(magic); | |
123 | - dlat = (dlat * 180.0) / ((A * (1 - EE)) / (magic * sqrtmagic) * PI); | |
124 | - dlng = (dlng * 180.0) / (A / sqrtmagic * Math.cos(radlat) * PI); | |
125 | - double mglat = lat + dlat; | |
126 | - double mglng = lng + dlng; | |
127 | - return new double[]{lng * 2 - mglng, lat * 2 - mglat}; | |
118 | + var dlat = transformLat(lng - 105.0, lat - 35.0) | |
119 | + var dlng = transformLng(lng - 105.0, lat - 35.0) | |
120 | + val radlat = lat / 180.0 * PI | |
121 | + var magic = sin(radlat) | |
122 | + magic = 1 - EE * magic * magic | |
123 | + val sqrtmagic = sqrt(magic) | |
124 | + dlat = | |
125 | + (dlat * 180.0) / ((A * (1 - EE)) / (magic * sqrtmagic) * PI) | |
126 | + dlng = (dlng * 180.0) / (A / sqrtmagic * cos(radlat) * PI) | |
127 | + val mglat = lat + dlat | |
128 | + val mglng = lng + dlng | |
129 | + return doubleArrayOf(lng * 2 - mglng, lat * 2 - mglat) | |
128 | 130 | } |
129 | 131 | |
130 | 132 | /** |
... | ... | @@ -134,12 +136,14 @@ public final class CoordinateTransformUtil { |
134 | 136 | * @param lat 纬度 |
135 | 137 | * @return 纬度 |
136 | 138 | */ |
137 | - public static double transformLat(double lng, double lat) { | |
138 | - double ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng)); | |
139 | - ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0; | |
140 | - ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0; | |
141 | - ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0; | |
142 | - return ret; | |
139 | + fun transformLat(lng: Double, lat: Double): Double { | |
140 | + var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * sqrt( | |
141 | + abs(lng) | |
142 | + ) | |
143 | + ret += (20.0 * sin(6.0 * lng * PI) + 20.0 * sin(2.0 * lng * PI)) * 2.0 / 3.0 | |
144 | + ret += (20.0 * sin(lat * PI) + 40.0 * sin(lat / 3.0 * PI)) * 2.0 / 3.0 | |
145 | + ret += (160.0 * sin(lat / 12.0 * PI) + 320 * sin(lat * PI / 30.0)) * 2.0 / 3.0 | |
146 | + return ret | |
143 | 147 | } |
144 | 148 | |
145 | 149 | /** |
... | ... | @@ -149,12 +153,13 @@ public final class CoordinateTransformUtil { |
149 | 153 | * @param lat 纬度 |
150 | 154 | * @return 经度 |
151 | 155 | */ |
152 | - public static double transformLng(double lng, double lat) { | |
153 | - double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng)); | |
154 | - ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0; | |
155 | - ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0; | |
156 | - ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0; | |
157 | - return ret; | |
156 | + fun transformLng(lng: Double, lat: Double): Double { | |
157 | + var ret = | |
158 | + 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * sqrt(abs(lng)) | |
159 | + ret += (20.0 * sin(6.0 * lng * PI) + 20.0 * sin(2.0 * lng * PI)) * 2.0 / 3.0 | |
160 | + ret += (20.0 * sin(lng * PI) + 40.0 * sin(lng / 3.0 * PI)) * 2.0 / 3.0 | |
161 | + ret += (150.0 * sin(lng / 12.0 * PI) + 300.0 * sin(lng / 30.0 * PI)) * 2.0 / 3.0 | |
162 | + return ret | |
158 | 163 | } |
159 | 164 | |
160 | 165 | /** |
... | ... | @@ -164,12 +169,11 @@ public final class CoordinateTransformUtil { |
164 | 169 | * @param lat 纬度 |
165 | 170 | * @return 是否 |
166 | 171 | */ |
167 | - public static boolean out_of_china(double lng, double lat) { | |
168 | - if (lng < 72.004 || lng > 137.8347) { | |
169 | - return true; | |
172 | + fun out_of_china(lng: Double, lat: Double): Boolean { | |
173 | + return if (lng < 72.004 || lng > 137.8347) { | |
174 | + true | |
170 | 175 | } else { |
171 | - return lat < 0.8293 || lat > 55.8271; | |
176 | + lat < 0.8293 || lat > 55.8271 | |
172 | 177 | } |
173 | 178 | } |
174 | - | |
175 | -} | |
179 | +} | |
176 | 180 | \ No newline at end of file | ... | ... |
fw-hestia-common/src/main/java/cn/fw/hestia/common/utils/DateUtil.kt
1 | -package cn.fw.hestia.common.utils; | |
1 | +package cn.fw.hestia.common.utils | |
2 | 2 | |
3 | -import java.sql.Timestamp; | |
4 | -import java.text.ParseException; | |
5 | -import java.text.SimpleDateFormat; | |
6 | -import java.time.*; | |
7 | -import java.time.temporal.TemporalAdjusters; | |
8 | -import java.util.Calendar; | |
9 | -import java.util.Date; | |
10 | -import java.util.Objects; | |
3 | +import org.slf4j.Logger | |
4 | +import org.slf4j.LoggerFactory | |
5 | +import java.sql.Timestamp | |
6 | +import java.text.SimpleDateFormat | |
7 | +import java.time.* | |
8 | +import java.time.temporal.TemporalAdjusters | |
9 | +import java.util.* | |
11 | 10 | |
12 | 11 | /** |
13 | 12 | * 日期处理工具 |
14 | - * <p> | |
13 | + * | |
14 | + * | |
15 | 15 | * |
16 | 16 | * @author kurisu |
17 | 17 | */ |
18 | -public final class DateUtil { | |
19 | - | |
20 | - private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
21 | - | |
22 | - /** | |
23 | - * 默认构造器 | |
24 | - */ | |
25 | - private DateUtil() { | |
26 | - throw new UnsupportedOperationException(); | |
27 | - } | |
28 | 18 | |
29 | - | |
30 | - public static Date parse(String date) { | |
19 | +object DateUtil { | |
20 | + private val sdf: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd") | |
21 | + private val log: Logger = LoggerFactory.getLogger(this::class.java) | |
22 | + fun parse(date: String?): Date? { | |
31 | 23 | try { |
32 | - return sdf.parse(date); | |
33 | - } catch (Exception e) { | |
34 | - e.printStackTrace(); | |
24 | + return sdf.parse(date) | |
25 | + } catch (e: Exception) { | |
26 | + log.error("解析失败", e) | |
35 | 27 | } |
36 | - return null; | |
28 | + return null | |
37 | 29 | } |
38 | 30 | |
39 | 31 | /** |
40 | 32 | * 开始日期处理 |
41 | 33 | */ |
42 | - public static Date startDate(final Date date) { | |
43 | - if (date == null) { | |
44 | - return null; | |
34 | + fun startDate(date: Date?): Date? { | |
35 | + return date?.also { | |
36 | + localDateTime2Date( | |
37 | + date2LocalDate(it)?.atStartOfDay() | |
38 | + ) | |
45 | 39 | } |
46 | - return localDateTime2Date(date2LocalDate(date).atStartOfDay()); | |
47 | 40 | } |
48 | 41 | |
49 | 42 | /** |
50 | 43 | * 最结束日期处理 |
51 | 44 | */ |
52 | - public static Date endDate(final Date date) { | |
45 | + fun endDate(date: Date?): Date? { | |
53 | 46 | if (date == null) { |
54 | - return null; | |
47 | + return null | |
55 | 48 | } |
56 | - return localDateTime2Date(date2LocalDate(date).plusDays(1).atStartOfDay()); | |
49 | + return localDateTime2Date( | |
50 | + date2LocalDate(date)?.plusDays(1)?.atStartOfDay() | |
51 | + ) | |
57 | 52 | } |
58 | 53 | |
59 | 54 | /** |
60 | 55 | * 处理日期,保留年月日 |
61 | 56 | */ |
62 | - public static LocalDate date2LocalDate(final Date date) { | |
57 | + fun date2LocalDate(date: Date?): LocalDate? { | |
63 | 58 | if (date == null) { |
64 | - return null; | |
59 | + return null | |
65 | 60 | } |
66 | - return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate(); | |
61 | + return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate() | |
67 | 62 | } |
68 | 63 | |
69 | - public static LocalTime date2LocalTime(final Date date) { | |
64 | + fun date2LocalTime(date: Date?): LocalTime? { | |
70 | 65 | if (date == null) { |
71 | - return null; | |
66 | + return null | |
72 | 67 | } |
73 | - return LocalTime.of(date.getHours(), date.getMinutes(), date.getSeconds()); | |
68 | + return LocalTime.of(date.hours, date.minutes, date.seconds) | |
74 | 69 | } |
75 | 70 | |
76 | - public static LocalDateTime date2LocalDateTime(final Date date) { | |
77 | - Instant instant = date.toInstant(); | |
78 | - ZoneId zoneId = ZoneId.systemDefault(); | |
79 | - return instant.atZone(zoneId).toLocalDateTime(); | |
71 | + fun date2LocalDateTime(date: Date): LocalDateTime { | |
72 | + val instant: Instant = date.toInstant() | |
73 | + val zoneId: ZoneId = ZoneId.systemDefault() | |
74 | + return instant.atZone(zoneId).toLocalDateTime() | |
80 | 75 | } |
81 | 76 | |
82 | 77 | /** |
83 | 78 | * convert LocalDateTime to Date |
84 | 79 | */ |
85 | - public static Date localDateTime2Date(final LocalDateTime dateTime) { | |
86 | - return Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()); | |
80 | + fun localDateTime2Date(dateTime: LocalDateTime?): Date? { | |
81 | + return dateTime?.let { | |
82 | + Date.from(it.atZone(ZoneId.systemDefault()).toInstant()) | |
83 | + } | |
87 | 84 | } |
88 | 85 | |
89 | 86 | /** |
90 | 87 | * convert LocalDate to Date |
91 | 88 | */ |
92 | - public static Date localDate2Date(final LocalDate localDate) { | |
89 | + fun localDate2Date(localDate: LocalDate?): Date? { | |
93 | 90 | if (localDate == null) { |
94 | - return null; | |
91 | + return null | |
95 | 92 | } |
96 | - return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); | |
93 | + return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) | |
97 | 94 | } |
98 | 95 | |
99 | - public static Date getBeginInTime(Date inTime) { | |
96 | + fun getBeginInTime(inTime: Date?): Date? { | |
100 | 97 | if (inTime == null) { |
101 | - return null; | |
98 | + return null | |
102 | 99 | } |
103 | - Calendar c = Calendar.getInstance(); | |
104 | - c.setTime(inTime); | |
105 | - c.set(Calendar.HOUR_OF_DAY, 0); | |
106 | - c.set(Calendar.MINUTE, 0); | |
107 | - c.set(Calendar.SECOND, 0); | |
108 | - return c.getTime(); | |
100 | + val c: Calendar = Calendar.getInstance() | |
101 | + c.time = inTime | |
102 | + c.set(Calendar.HOUR_OF_DAY, 0) | |
103 | + c.set(Calendar.MINUTE, 0) | |
104 | + c.set(Calendar.SECOND, 0) | |
105 | + return c.time | |
109 | 106 | } |
110 | 107 | |
111 | - public static Date getEndInTime(Date inTime) { | |
108 | + fun getEndInTime(inTime: Date?): Date? { | |
112 | 109 | if (inTime == null) { |
113 | - return null; | |
110 | + return null | |
114 | 111 | } |
115 | - Calendar c = Calendar.getInstance(); | |
116 | - c.setTime(inTime); | |
117 | - c.set(Calendar.HOUR_OF_DAY, 23); | |
118 | - c.set(Calendar.MINUTE, 59); | |
119 | - c.set(Calendar.SECOND, 59); | |
120 | - return c.getTime(); | |
112 | + val c: Calendar = Calendar.getInstance() | |
113 | + c.time = inTime | |
114 | + c.set(Calendar.HOUR_OF_DAY, 23) | |
115 | + c.set(Calendar.MINUTE, 59) | |
116 | + c.set(Calendar.SECOND, 59) | |
117 | + return c.time | |
121 | 118 | } |
122 | 119 | |
123 | 120 | /** |
... | ... | @@ -125,15 +122,15 @@ public final class DateUtil { |
125 | 122 | * |
126 | 123 | * @return |
127 | 124 | */ |
128 | - public static Date getMondayOfThisWeek(Date inTime) { | |
129 | - Calendar c = Calendar.getInstance(); | |
130 | - c.setTime(inTime); | |
131 | - int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1; | |
125 | + fun getMondayOfThisWeek(inTime: Date?): Date { | |
126 | + val c: Calendar = Calendar.getInstance() | |
127 | + c.time = inTime | |
128 | + var day_of_week: Int = c.get(Calendar.DAY_OF_WEEK) - 1 | |
132 | 129 | if (day_of_week == 0) { |
133 | - day_of_week = 7; | |
130 | + day_of_week = 7 | |
134 | 131 | } |
135 | - c.add(Calendar.DATE, -day_of_week + 1); | |
136 | - return c.getTime(); | |
132 | + c.add(Calendar.DATE, -day_of_week + 1) | |
133 | + return c.time | |
137 | 134 | } |
138 | 135 | |
139 | 136 | /** |
... | ... | @@ -141,15 +138,15 @@ public final class DateUtil { |
141 | 138 | * |
142 | 139 | * @return |
143 | 140 | */ |
144 | - public static Date getSundayOfThisWeek(Date inTime) { | |
145 | - Calendar c = Calendar.getInstance(); | |
146 | - c.setTime(inTime); | |
147 | - int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1; | |
141 | + fun getSundayOfThisWeek(inTime: Date?): Date { | |
142 | + val c: Calendar = Calendar.getInstance() | |
143 | + c.time = inTime | |
144 | + var day_of_week: Int = c.get(Calendar.DAY_OF_WEEK) - 1 | |
148 | 145 | if (day_of_week == 0) { |
149 | - day_of_week = 7; | |
146 | + day_of_week = 7 | |
150 | 147 | } |
151 | - c.add(Calendar.DATE, -day_of_week + 7); | |
152 | - return c.getTime(); | |
148 | + c.add(Calendar.DATE, -day_of_week + 7) | |
149 | + return c.time | |
153 | 150 | } |
154 | 151 | |
155 | 152 | /** |
... | ... | @@ -157,60 +154,63 @@ public final class DateUtil { |
157 | 154 | * |
158 | 155 | * @return |
159 | 156 | */ |
160 | - public static Date getMonthFirstDay(Date inTime) { | |
161 | - Calendar c = Calendar.getInstance(); | |
162 | - c.setTime(inTime); | |
163 | - c.add(Calendar.MONTH, 0); | |
164 | - c.set(Calendar.DAY_OF_MONTH, 1); | |
165 | - return c.getTime(); | |
157 | + fun getMonthFirstDay(inTime: Date?): Date { | |
158 | + val c: Calendar = Calendar.getInstance() | |
159 | + c.time = inTime | |
160 | + c.add(Calendar.MONTH, 0) | |
161 | + c.set(Calendar.DAY_OF_MONTH, 1) | |
162 | + return c.time | |
166 | 163 | } |
167 | 164 | |
168 | - /** | |
169 | - * 获取当月月初时间 | |
170 | - */ | |
171 | - public static Date getMonthFirstDay() { | |
172 | - return DateUtil.localDate2Date(LocalDateTime.now() | |
173 | - .with(TemporalAdjusters.firstDayOfMonth()).toLocalDate()); | |
174 | - } | |
165 | + val monthFirstDay: Date? | |
166 | + /** | |
167 | + * 获取当月月初时间 | |
168 | + */ | |
169 | + get() = localDate2Date( | |
170 | + LocalDateTime.now() | |
171 | + .with(TemporalAdjusters.firstDayOfMonth()).toLocalDate() | |
172 | + ) | |
175 | 173 | |
176 | 174 | /** |
177 | 175 | * 得到月末 |
178 | 176 | * |
179 | 177 | * @return |
180 | 178 | */ |
181 | - public static Date getMonthEndDay(Date inTime) { | |
182 | - Calendar c = Calendar.getInstance(); | |
183 | - c.setTime(inTime); | |
184 | - c.add(Calendar.MONTH, 1); | |
185 | - c.set(Calendar.DAY_OF_MONTH, 0); | |
186 | - return c.getTime(); | |
187 | - } | |
188 | - | |
189 | - /** | |
190 | - * 得到月末 | |
191 | - * | |
192 | - * @return | |
193 | - */ | |
194 | - public static Date getMonthEndDay() { | |
195 | - return DateUtil.localDate2Date(LocalDateTime.now() | |
196 | - .with(TemporalAdjusters.lastDayOfMonth()).toLocalDate()); | |
197 | - } | |
179 | + fun getMonthEndDay(inTime: Date?): Date { | |
180 | + val c: Calendar = Calendar.getInstance() | |
181 | + c.time = inTime | |
182 | + c.add(Calendar.MONTH, 1) | |
183 | + c.set(Calendar.DAY_OF_MONTH, 0) | |
184 | + return c.time | |
185 | + } | |
186 | + | |
187 | + val monthEndDay: Date? | |
188 | + /** | |
189 | + * 得到月末 | |
190 | + * | |
191 | + * @return | |
192 | + */ | |
193 | + get() { | |
194 | + return localDate2Date( | |
195 | + LocalDateTime.now() | |
196 | + .with(TemporalAdjusters.lastDayOfMonth()).toLocalDate() | |
197 | + ) | |
198 | + } | |
198 | 199 | |
199 | 200 | /** |
200 | 201 | * 得到年初 |
201 | 202 | * |
202 | 203 | * @return |
203 | 204 | */ |
204 | - public static Date getYearFirstDay(Date inTime) { | |
205 | - Calendar c = Calendar.getInstance(); | |
206 | - c.setTime(inTime); | |
207 | - int x = c.get(Calendar.YEAR); | |
205 | + fun getYearFirstDay(inTime: Date?): Date? { | |
206 | + val c: Calendar = Calendar.getInstance() | |
207 | + c.time = inTime | |
208 | + val x: Int = c.get(Calendar.YEAR) | |
208 | 209 | try { |
209 | - return sdf.parse(x + "-01" + "-01"); | |
210 | - } catch (Exception e) { | |
211 | - | |
210 | + return sdf.parse("$x-01-01") | |
211 | + } catch (e: Exception) { | |
212 | 212 | } |
213 | - return null; | |
213 | + return null | |
214 | 214 | } |
215 | 215 | |
216 | 216 | /** |
... | ... | @@ -218,61 +218,66 @@ public final class DateUtil { |
218 | 218 | * |
219 | 219 | * @return |
220 | 220 | */ |
221 | - public static Date getYearEndDay(Date inTime) { | |
222 | - Calendar c = Calendar.getInstance(); | |
223 | - c.setTime(inTime); | |
224 | - int x = c.get(Calendar.YEAR); | |
221 | + fun getYearEndDay(inTime: Date?): Date? { | |
222 | + val c: Calendar = Calendar.getInstance() | |
223 | + c.time = inTime | |
224 | + val x: Int = c.get(Calendar.YEAR) | |
225 | 225 | try { |
226 | - return sdf.parse(x + "-12" + "-31"); | |
227 | - } catch (Exception e) { | |
228 | - | |
226 | + return sdf.parse("$x-12-31") | |
227 | + } catch (e: Exception) { | |
228 | + } | |
229 | + return null | |
230 | + } | |
231 | + | |
232 | + fun getThisHourStartTime(time: Date): Date { | |
233 | + val thisHourStart: LocalDateTime = LocalDateTime.of( | |
234 | + date2LocalDateTime(time).year, | |
235 | + date2LocalDateTime(time).month, | |
236 | + date2LocalDateTime(time).dayOfMonth, | |
237 | + date2LocalDateTime(time).hour, | |
238 | + 0, 0 | |
239 | + ) | |
240 | + return localDateTime2Date(thisHourStart)!! | |
241 | + } | |
242 | + | |
243 | + fun getThisHourEndTime(time: Date): Date { | |
244 | + val thisHourEnd: LocalDateTime = LocalDateTime.of( | |
245 | + date2LocalDateTime(time).year, | |
246 | + date2LocalDateTime(time).month, | |
247 | + date2LocalDateTime(time).dayOfMonth, | |
248 | + date2LocalDateTime(time).hour, | |
249 | + 59, 59 | |
250 | + ) | |
251 | + return localDateTime2Date(thisHourEnd)!! | |
252 | + } | |
253 | + | |
254 | + val currentDayStartTime: Date | |
255 | + /** | |
256 | + * 获取当天起始时间 | |
257 | + * | |
258 | + * @return 当天起始时间 | |
259 | + */ | |
260 | + get() { | |
261 | + val now: LocalDateTime = LocalDateTime.now() | |
262 | + val start: LocalDateTime = LocalDateTime.of(now.year, now.month, now.dayOfMonth, 0, 0, 0) | |
263 | + val zone: ZoneId = ZoneId.systemDefault() | |
264 | + val instant: Instant = start.atZone(zone).toInstant() | |
265 | + return Date.from(instant) | |
229 | 266 | } |
230 | - return null; | |
231 | - } | |
232 | - | |
233 | - public static Date getThisHourStartTime(Date time) { | |
234 | - final LocalDateTime thisHourStart = LocalDateTime.of(DateUtil.date2LocalDateTime(time).getYear(), | |
235 | - DateUtil.date2LocalDateTime(time).getMonth(), | |
236 | - DateUtil.date2LocalDateTime(time).getDayOfMonth(), | |
237 | - DateUtil.date2LocalDateTime(time).getHour(), | |
238 | - 0, 0); | |
239 | - return DateUtil.localDateTime2Date(thisHourStart); | |
240 | - } | |
241 | - | |
242 | - public static Date getThisHourEndTime(Date time) { | |
243 | - final LocalDateTime thisHourEnd = LocalDateTime.of(DateUtil.date2LocalDateTime(time).getYear(), | |
244 | - DateUtil.date2LocalDateTime(time).getMonth(), | |
245 | - DateUtil.date2LocalDateTime(time).getDayOfMonth(), | |
246 | - DateUtil.date2LocalDateTime(time).getHour(), | |
247 | - 59, 59); | |
248 | - return DateUtil.localDateTime2Date(thisHourEnd); | |
249 | - } | |
250 | - | |
251 | - /** | |
252 | - * 获取当天起始时间 | |
253 | - * | |
254 | - * @return 当天起始时间 | |
255 | - */ | |
256 | - public static Date getCurrentDayStartTime() { | |
257 | - LocalDateTime now = LocalDateTime.now(); | |
258 | - LocalDateTime start = LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth(), 0, 0, 0); | |
259 | - ZoneId zone = ZoneId.systemDefault(); | |
260 | - Instant instant = start.atZone(zone).toInstant(); | |
261 | - return Date.from(instant); | |
262 | - } | |
263 | 267 | |
264 | - /** | |
265 | - * 获取当天结束时间 | |
266 | - * | |
267 | - * @return 当天结束时间 | |
268 | - */ | |
269 | - public static Date getCurrentDayEndTime() { | |
270 | - LocalDateTime now = LocalDateTime.now(); | |
271 | - LocalDateTime end = LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth(), 23, 59, 59); | |
272 | - ZoneId zone = ZoneId.systemDefault(); | |
273 | - Instant instant = end.atZone(zone).toInstant(); | |
274 | - return Date.from(instant); | |
275 | - } | |
268 | + val currentDayEndTime: Date | |
269 | + /** | |
270 | + * 获取当天结束时间 | |
271 | + * | |
272 | + * @return 当天结束时间 | |
273 | + */ | |
274 | + get() { | |
275 | + val now: LocalDateTime = LocalDateTime.now() | |
276 | + val end: LocalDateTime = LocalDateTime.of(now.year, now.month, now.dayOfMonth, 23, 59, 59) | |
277 | + val zone: ZoneId = ZoneId.systemDefault() | |
278 | + val instant: Instant = end.atZone(zone).toInstant() | |
279 | + return Date.from(instant) | |
280 | + } | |
276 | 281 | |
277 | 282 | |
278 | 283 | /** |
... | ... | @@ -281,12 +286,12 @@ public final class DateUtil { |
281 | 286 | * @param date 需要转换格式的日期 |
282 | 287 | * @return 返回短时间字符串格式 yyyy-MM-dd |
283 | 288 | */ |
284 | - public static String getStringDateShort(Date date) { | |
289 | + fun getStringDateShort(date: Date?): String? { | |
285 | 290 | if (date == null) { |
286 | - return null; | |
291 | + return null | |
287 | 292 | } |
288 | - String dateString = sdf.format(date); | |
289 | - return dateString; | |
293 | + val dateString: String = sdf.format(date) | |
294 | + return dateString | |
290 | 295 | } |
291 | 296 | |
292 | 297 | /** |
... | ... | @@ -295,12 +300,12 @@ public final class DateUtil { |
295 | 300 | * @param date 需要转换格式的日期 |
296 | 301 | * @return 返回短时间字符串格式 yyyy-MM-dd HH:mm:ss |
297 | 302 | */ |
298 | - public static String getFullDateString(Date date) { | |
303 | + fun getFullDateString(date: Date?): String { | |
299 | 304 | if (date == null) { |
300 | - return ""; | |
305 | + return "" | |
301 | 306 | } |
302 | - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
303 | - return format.format(date); | |
307 | + val format: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") | |
308 | + return format.format(date) | |
304 | 309 | } |
305 | 310 | |
306 | 311 | /** |
... | ... | @@ -309,12 +314,12 @@ public final class DateUtil { |
309 | 314 | * @param date 需要转换格式的日期 |
310 | 315 | * @return 返回短时间字符串格式 yyyy-MM |
311 | 316 | */ |
312 | - public static String getMonthString(Date date) { | |
317 | + fun getMonthString(date: Date?): String { | |
313 | 318 | if (date == null) { |
314 | - return ""; | |
319 | + return "" | |
315 | 320 | } |
316 | - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); | |
317 | - return format.format(date); | |
321 | + val format: SimpleDateFormat = SimpleDateFormat("yyyy-MM") | |
322 | + return format.format(date) | |
318 | 323 | } |
319 | 324 | |
320 | 325 | /** |
... | ... | @@ -324,91 +329,94 @@ public final class DateUtil { |
324 | 329 | * @param pattern 时间字符串格式 |
325 | 330 | * @return 返回时间字符串 |
326 | 331 | */ |
327 | - public static String getFormatString(Date date, String pattern) { | |
332 | + fun getFormatString(date: Date?, pattern: String?): String { | |
328 | 333 | if (date == null) { |
329 | - return ""; | |
334 | + return "" | |
335 | + } | |
336 | + val format: SimpleDateFormat = SimpleDateFormat(pattern) | |
337 | + return format.format(date) | |
338 | + } | |
339 | + | |
340 | + val nextMonthStartTime: Date? | |
341 | + /** | |
342 | + * 获取下月月初时间 | |
343 | + */ | |
344 | + get() { | |
345 | + return localDate2Date( | |
346 | + LocalDateTime.now() | |
347 | + .with(TemporalAdjusters.lastDayOfMonth()).plusDays(1L).toLocalDate() | |
348 | + ) | |
330 | 349 | } |
331 | - SimpleDateFormat format = new SimpleDateFormat(pattern); | |
332 | - return format.format(date); | |
333 | - } | |
334 | - | |
335 | - /** | |
336 | - * 获取下月月初时间 | |
337 | - */ | |
338 | - public static Date getNextMonthStartTime() { | |
339 | - return DateUtil.localDate2Date(LocalDateTime.now() | |
340 | - .with(TemporalAdjusters.lastDayOfMonth()).plusDays(1L).toLocalDate()); | |
341 | - } | |
342 | 350 | |
343 | 351 | /** |
344 | 352 | * @param offsetYear |
345 | 353 | * @return 当前时间 + offsetYear |
346 | 354 | */ |
347 | - public static Timestamp getNowExpiredYear(int offsetYear) { | |
348 | - Calendar now = Calendar.getInstance(); | |
349 | - now.add(Calendar.YEAR, offsetYear); | |
350 | - return new Timestamp(now.getTime().getTime()); | |
355 | + fun getNowExpiredYear(offsetYear: Int): Timestamp { | |
356 | + val now: Calendar = Calendar.getInstance() | |
357 | + now.add(Calendar.YEAR, offsetYear) | |
358 | + return Timestamp(now.time.time) | |
351 | 359 | } |
352 | 360 | |
353 | 361 | /** |
354 | 362 | * @param offset |
355 | 363 | * @return 当前时间 + offsetMonth |
356 | 364 | */ |
357 | - public static Timestamp getNowExpiredMonth(int offset) { | |
358 | - Calendar now = Calendar.getInstance(); | |
359 | - now.add(Calendar.MONTH, offset); | |
360 | - return new Timestamp(now.getTime().getTime()); | |
365 | + fun getNowExpiredMonth(offset: Int): Timestamp { | |
366 | + val now: Calendar = Calendar.getInstance() | |
367 | + now.add(Calendar.MONTH, offset) | |
368 | + return Timestamp(now.time.time) | |
361 | 369 | } |
362 | 370 | |
363 | 371 | /** |
364 | 372 | * @param offset |
365 | 373 | * @return 当前时间 + offsetDay |
366 | 374 | */ |
367 | - public static Timestamp getNowExpiredDay(int offset) { | |
368 | - Calendar now = Calendar.getInstance(); | |
369 | - now.add(Calendar.DATE, offset); | |
370 | - return new Timestamp(now.getTime().getTime()); | |
375 | + fun getNowExpiredDay(offset: Int): Timestamp { | |
376 | + val now: Calendar = Calendar.getInstance() | |
377 | + now.add(Calendar.DATE, offset) | |
378 | + return Timestamp(now.time.time) | |
371 | 379 | } |
372 | 380 | |
373 | 381 | /** |
374 | 382 | * @param offset |
375 | 383 | * @return 当前时间 + offsetDay |
376 | 384 | */ |
377 | - public static Timestamp getNowExpiredHour(int offset) { | |
378 | - Calendar now = Calendar.getInstance(); | |
379 | - now.add(Calendar.HOUR, offset); | |
380 | - return new Timestamp(now.getTime().getTime()); | |
385 | + fun getNowExpiredHour(offset: Int): Timestamp { | |
386 | + val now: Calendar = Calendar.getInstance() | |
387 | + now.add(Calendar.HOUR, offset) | |
388 | + return Timestamp(now.time.time) | |
381 | 389 | } |
382 | 390 | |
383 | 391 | /** |
384 | 392 | * @param offsetSecond |
385 | 393 | * @return 当前时间 + offsetSecond |
386 | 394 | */ |
387 | - public static Timestamp getNowExpiredSecond(int offsetSecond) { | |
388 | - Calendar now = Calendar.getInstance(); | |
389 | - now.add(Calendar.SECOND, offsetSecond); | |
390 | - return new Timestamp(now.getTime().getTime()); | |
395 | + fun getNowExpiredSecond(offsetSecond: Int): Timestamp { | |
396 | + val now: Calendar = Calendar.getInstance() | |
397 | + now.add(Calendar.SECOND, offsetSecond) | |
398 | + return Timestamp(now.time.time) | |
391 | 399 | } |
392 | 400 | |
393 | 401 | /** |
394 | 402 | * @param offset |
395 | 403 | * @return 当前时间 + offset |
396 | 404 | */ |
397 | - public static Timestamp getNowExpiredMinute(int offset) { | |
398 | - Calendar now = Calendar.getInstance(); | |
399 | - now.add(Calendar.MINUTE, offset); | |
400 | - return new Timestamp(now.getTime().getTime()); | |
405 | + fun getNowExpiredMinute(offset: Int): Timestamp { | |
406 | + val now: Calendar = Calendar.getInstance() | |
407 | + now.add(Calendar.MINUTE, offset) | |
408 | + return Timestamp(now.time.time) | |
401 | 409 | } |
402 | 410 | |
403 | 411 | /** |
404 | 412 | * @param offset |
405 | 413 | * @return 指定时间 + offsetDay |
406 | 414 | */ |
407 | - public static Timestamp getExpiredDay(Date givenDate, int offset) { | |
408 | - Calendar date = Calendar.getInstance(); | |
409 | - date.setTime(givenDate); | |
410 | - date.add(Calendar.DATE, offset); | |
411 | - return new Timestamp(date.getTime().getTime()); | |
415 | + fun getExpiredDay(givenDate: Date?, offset: Int): Timestamp { | |
416 | + val date: Calendar = Calendar.getInstance() | |
417 | + date.time = givenDate | |
418 | + date.add(Calendar.DATE, offset) | |
419 | + return Timestamp(date.time.time) | |
412 | 420 | } |
413 | 421 | |
414 | 422 | /** |
... | ... | @@ -417,33 +425,33 @@ public final class DateUtil { |
417 | 425 | * @param offset |
418 | 426 | * @return 指定时间 + offsetMonth |
419 | 427 | */ |
420 | - public static Timestamp getExpiredMonth(Date givenDate, int offset) { | |
421 | - Calendar date = Calendar.getInstance(); | |
422 | - date.setTime(givenDate); | |
423 | - date.add(Calendar.MONTH, offset); | |
424 | - return new Timestamp(date.getTime().getTime()); | |
428 | + fun getExpiredMonth(givenDate: Date?, offset: Int): Timestamp { | |
429 | + val date: Calendar = Calendar.getInstance() | |
430 | + date.time = givenDate | |
431 | + date.add(Calendar.MONTH, offset) | |
432 | + return Timestamp(date.time.time) | |
425 | 433 | } |
426 | 434 | |
427 | 435 | /** |
428 | 436 | * @param |
429 | 437 | * @return 指定时间 + offsetYear |
430 | 438 | */ |
431 | - public static Timestamp getExpiredYear(Date givenDate, int offsetYear) { | |
432 | - Calendar date = Calendar.getInstance(); | |
433 | - date.setTime(givenDate); | |
434 | - date.add(Calendar.YEAR, offsetYear); | |
435 | - return new Timestamp(date.getTime().getTime()); | |
439 | + fun getExpiredYear(givenDate: Date?, offsetYear: Int): Timestamp { | |
440 | + val date: Calendar = Calendar.getInstance() | |
441 | + date.time = givenDate | |
442 | + date.add(Calendar.YEAR, offsetYear) | |
443 | + return Timestamp(date.time.time) | |
436 | 444 | } |
437 | 445 | |
438 | 446 | /** |
439 | 447 | * @param second |
440 | 448 | * @return 指定时间 + offsetSecond |
441 | 449 | */ |
442 | - public static Timestamp getExpiredSecond(Date givenDate, int second) { | |
443 | - Calendar date = Calendar.getInstance(); | |
444 | - date.setTime(givenDate); | |
445 | - date.add(Calendar.SECOND, second); | |
446 | - return new Timestamp(date.getTime().getTime()); | |
450 | + fun getExpiredSecond(givenDate: Date?, second: Int): Timestamp { | |
451 | + val date: Calendar = Calendar.getInstance() | |
452 | + date.time = givenDate | |
453 | + date.add(Calendar.SECOND, second) | |
454 | + return Timestamp(date.time.time) | |
447 | 455 | } |
448 | 456 | |
449 | 457 | /** |
... | ... | @@ -454,11 +462,11 @@ public final class DateUtil { |
454 | 462 | * @param type 日期字段类型 |
455 | 463 | * @return |
456 | 464 | */ |
457 | - public static Timestamp getExpired(Date givenDate, int offset, Integer type) { | |
458 | - Calendar date = Calendar.getInstance(); | |
459 | - date.setTime(givenDate); | |
460 | - date.add(type, offset); | |
461 | - return new Timestamp(date.getTime().getTime()); | |
465 | + fun getExpired(givenDate: Date, offset: Int, type: Int): Timestamp { | |
466 | + val date: Calendar = Calendar.getInstance() | |
467 | + date.time = givenDate | |
468 | + date.add(type, offset) | |
469 | + return Timestamp(date.time.time) | |
462 | 470 | } |
463 | 471 | |
464 | 472 | /** |
... | ... | @@ -469,28 +477,30 @@ public final class DateUtil { |
469 | 477 | * @param type 类型 |
470 | 478 | * @return 计算结果 |
471 | 479 | */ |
472 | - public static Integer sub(Date d1, Date d2, String type) { | |
480 | + fun sub(d1: Date?, d2: Date?, type: String): Int? { | |
473 | 481 | if (d1 == null || d2 == null) { |
474 | - return null; | |
482 | + return null | |
475 | 483 | } |
476 | - long result = 0L; | |
477 | - long DAY = 24 * 60 * 60 * 1000L; | |
478 | - long sub = d1.getTime() - d2.getTime(); | |
479 | - long daysub = (sub / DAY); | |
480 | - long y1 = d1.getYear(), y2 = d2.getYear(); | |
481 | - long m1 = d1.getMonth(), m2 = d2.getMonth(); | |
482 | - long monthsub = (y1 - y2) * 12 + (m1 - m2); | |
484 | + var result: Long = 0L | |
485 | + val DAY: Long = 24 * 60 * 60 * 1000L | |
486 | + val sub: Long = d1.time - d2.time | |
487 | + val daysub: Long = (sub / DAY) | |
488 | + val y1: Long = d1.year.toLong() | |
489 | + val y2: Long = d2.year.toLong() | |
490 | + val m1: Long = d1.month.toLong() | |
491 | + val m2: Long = d2.month.toLong() | |
492 | + val monthsub: Long = (y1 - y2) * 12 + (m1 - m2) | |
483 | 493 | //月 |
484 | - if ("m".equals(type)) { | |
485 | - result = monthsub; | |
494 | + if (("m" == type)) { | |
495 | + result = monthsub | |
486 | 496 | //年 |
487 | - } else if ("y".equals(type)) { | |
488 | - result = monthsub / 12; | |
497 | + } else if (("y" == type)) { | |
498 | + result = monthsub / 12 | |
489 | 499 | //天 |
490 | - } else if ("d".equals(type)) { | |
491 | - result = daysub; | |
500 | + } else if (("d" == type)) { | |
501 | + result = daysub | |
492 | 502 | } |
493 | - return (int) result; | |
503 | + return result.toInt() | |
494 | 504 | } |
495 | 505 | |
496 | 506 | /** |
... | ... | @@ -499,15 +509,15 @@ public final class DateUtil { |
499 | 509 | * @param date |
500 | 510 | * @return |
501 | 511 | */ |
502 | - public static boolean isBeforeDawn(Date date) { | |
512 | + fun isBeforeDawn(date: Date): Boolean { | |
503 | 513 | if (Objects.isNull(date)) { |
504 | - return false; | |
514 | + return false | |
505 | 515 | } |
506 | - LocalDateTime dateTime = date2LocalDateTime(date); | |
507 | - SimpleDateFormat df = new SimpleDateFormat("HH"); | |
508 | - String str = df.format(localDateTime2Date(dateTime)); | |
509 | - int a = Integer.parseInt(str); | |
510 | - return a >= 0 && a <= 6; | |
516 | + val dateTime: LocalDateTime = date2LocalDateTime(date) | |
517 | + val sdf: SimpleDateFormat = SimpleDateFormat("HH") | |
518 | + val str: String = sdf.format(localDateTime2Date(dateTime)) | |
519 | + val a: Int = str.toInt() | |
520 | + return a >= 0 && a <= 6 | |
511 | 521 | } |
512 | 522 | |
513 | 523 | /** |
... | ... | @@ -516,15 +526,15 @@ public final class DateUtil { |
516 | 526 | * @param date |
517 | 527 | * @return |
518 | 528 | */ |
519 | - public static boolean isMorning(Date date) { | |
529 | + fun isMorning(date: Date): Boolean { | |
520 | 530 | if (Objects.isNull(date)) { |
521 | - return false; | |
531 | + return false | |
522 | 532 | } |
523 | - LocalDateTime dateTime = date2LocalDateTime(date); | |
524 | - SimpleDateFormat df = new SimpleDateFormat("HH"); | |
525 | - String str = df.format(localDateTime2Date(dateTime)); | |
526 | - int a = Integer.parseInt(str); | |
527 | - return a > 6 && a <= 12; | |
533 | + val dateTime: LocalDateTime = date2LocalDateTime(date) | |
534 | + val sdf: SimpleDateFormat = SimpleDateFormat("HH") | |
535 | + val str: String = sdf.format(localDateTime2Date(dateTime)) | |
536 | + val a: Int = str.toInt() | |
537 | + return a in 7..12 | |
528 | 538 | } |
529 | 539 | |
530 | 540 | /** |
... | ... | @@ -533,15 +543,15 @@ public final class DateUtil { |
533 | 543 | * @param date |
534 | 544 | * @return |
535 | 545 | */ |
536 | - public static boolean isAfternoon(Date date) { | |
546 | + fun isAfternoon(date: Date): Boolean { | |
537 | 547 | if (Objects.isNull(date)) { |
538 | - return false; | |
548 | + return false | |
539 | 549 | } |
540 | - LocalDateTime dateTime = date2LocalDateTime(date); | |
541 | - SimpleDateFormat df = new SimpleDateFormat("HH"); | |
542 | - String str = df.format(localDateTime2Date(dateTime)); | |
543 | - int a = Integer.parseInt(str); | |
544 | - return a > 12 && a <= 18; | |
550 | + val dateTime: LocalDateTime = date2LocalDateTime(date) | |
551 | + val df: SimpleDateFormat = SimpleDateFormat("HH") | |
552 | + val str: String = df.format(localDateTime2Date(dateTime)) | |
553 | + val a: Int = str.toInt() | |
554 | + return a > 12 && a <= 18 | |
545 | 555 | } |
546 | 556 | |
547 | 557 | /** |
... | ... | @@ -550,29 +560,14 @@ public final class DateUtil { |
550 | 560 | * @param date |
551 | 561 | * @return |
552 | 562 | */ |
553 | - public static boolean isEvening(Date date) { | |
563 | + fun isEvening(date: Date): Boolean { | |
554 | 564 | if (Objects.isNull(date)) { |
555 | - return false; | |
556 | - } | |
557 | - LocalDateTime dateTime = date2LocalDateTime(date); | |
558 | - SimpleDateFormat df = new SimpleDateFormat("HH"); | |
559 | - String str = df.format(localDateTime2Date(dateTime)); | |
560 | - int a = Integer.parseInt(str); | |
561 | - return a > 18 && a <= 23; | |
562 | - } | |
563 | - | |
564 | - public static void main(String[] args) throws ParseException { | |
565 | - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
566 | - Date date = format.parse("2020-09-19 15:45:30"); | |
567 | - | |
568 | - Timestamp expired = DateUtil.getExpired(date, 3, Calendar.DATE); | |
569 | - if (!isBeforeDawn(expired)) { | |
570 | - expired = getExpired(startDate(expired), 1, Calendar.DATE); | |
571 | - System.out.println(expired); | |
565 | + return false | |
572 | 566 | } |
573 | - System.out.println(getEndInTime(getMonthEndDay())); | |
574 | - System.out.println(expired); | |
575 | - System.out.println(startDate(DateUtil.getMonthFirstDay(date))); | |
576 | - ; | |
567 | + val dateTime: LocalDateTime = date2LocalDateTime(date) | |
568 | + val df: SimpleDateFormat = SimpleDateFormat("HH") | |
569 | + val str: String = df.format(localDateTime2Date(dateTime)) | |
570 | + val a: Int = str.toInt() | |
571 | + return a > 18 && a <= 23 | |
577 | 572 | } |
578 | 573 | } | ... | ... |
fw-hestia-common/src/main/java/cn/fw/hestia/common/utils/StringUtils.java
... | ... | @@ -88,7 +88,7 @@ public final class StringUtils { |
88 | 88 | * @return boolean |
89 | 89 | */ |
90 | 90 | public static boolean isValid(Object obj) { |
91 | - return obj != null && obj.toString().length() > 0; | |
91 | + return obj != null && !obj.toString().isEmpty(); | |
92 | 92 | } |
93 | 93 | |
94 | 94 | /** |
... | ... | @@ -98,7 +98,7 @@ public final class StringUtils { |
98 | 98 | * @return |
99 | 99 | */ |
100 | 100 | public static boolean isEmpty(Object obj) { |
101 | - return obj == null || obj.toString().length() == 0; | |
101 | + return obj == null || obj.toString().isEmpty(); | |
102 | 102 | } |
103 | 103 | |
104 | 104 | /** |
... | ... | @@ -178,7 +178,7 @@ public final class StringUtils { |
178 | 178 | if (i > 0) { |
179 | 179 | s.append(split); |
180 | 180 | } |
181 | - s.append(wrap + list[i] + wrap); | |
181 | + s.append(wrap).append(list[i]).append(wrap); | |
182 | 182 | } |
183 | 183 | return s.toString(); |
184 | 184 | } |
... | ... | @@ -305,8 +305,7 @@ public final class StringUtils { |
305 | 305 | return input; |
306 | 306 | } |
307 | 307 | buffer.append(tail); |
308 | - } catch (UnsupportedEncodingException e) { | |
309 | - e.printStackTrace(); | |
308 | + } catch (UnsupportedEncodingException ignored) { | |
310 | 309 | } |
311 | 310 | return buffer.toString(); |
312 | 311 | } |
... | ... | @@ -386,7 +385,7 @@ public final class StringUtils { |
386 | 385 | * @return |
387 | 386 | * @throws IOException |
388 | 387 | */ |
389 | - public static String toJsonValue(Object value) throws IOException { | |
388 | + public static String toJsonValue(Object value) { | |
390 | 389 | if (value instanceof Number) { |
391 | 390 | return value.toString(); |
392 | 391 | } else { |
... | ... | @@ -465,8 +464,7 @@ public final class StringUtils { |
465 | 464 | int len = text.length(); |
466 | 465 | try { |
467 | 466 | len = text.getBytes("GBK").length;//SQLServer数据库用的GBK编码 |
468 | - } catch (UnsupportedEncodingException e) { | |
469 | - e.printStackTrace(); | |
467 | + } catch (UnsupportedEncodingException ignored) { | |
470 | 468 | } |
471 | 469 | return len; |
472 | 470 | } |
... | ... | @@ -519,6 +517,7 @@ public final class StringUtils { |
519 | 517 | |
520 | 518 | /** |
521 | 519 | * 获取默认值 |
520 | + * | |
522 | 521 | * @param str |
523 | 522 | * @param defaultStr |
524 | 523 | * @return | ... | ... |