Skip to content

Commit d189854

Browse files
authored
Merge pull request #23 from zhengqiang1988/fix-date-bug
修复DATEDIF不能正确处理10月的问题
2 parents 63d8ea2 + 6a23132 commit d189854

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

java/toolgood.algorithm/src/main/java/toolgood/algorithm/MyDate.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public MyDate(double num) {
113113
public static MyDate parse(String txt) {
114114
String t = txt.trim();
115115
Matcher m = Pattern
116-
.compile("^(\\d{4})-(11|12|0?\\d)-(30|31|[012]?\\d) ([01]\\d?|2[1234]):([012345]?\\d):([012345]?\\d)$")
116+
.compile("^(\\d{4})-(10|11|12|0?\\d)-(30|31|[012]?\\d) ([01]\\d?|2[1234]):([012345]?\\d):([012345]?\\d)$")
117117
.matcher(t);
118118
if (m.find()) {
119119
MyDate date = new MyDate();
@@ -125,7 +125,7 @@ public static MyDate parse(String txt) {
125125
date.Second = Integer.parseInt(m.group(6));
126126
return date;
127127
}
128-
m = Pattern.compile("(\\d{4})-(11|12|0?\\d)-(30|31|[012]?\\d) ([01]\\d?|2[1234]):([012345]?\\d)").matcher(t);
128+
m = Pattern.compile("(\\d{4})-(10|11|12|0?\\d)-(30|31|[012]?\\d) ([01]\\d?|2[1234]):([012345]?\\d)").matcher(t);
129129
if (m.find()) {
130130
MyDate date = new MyDate();
131131
date.Year = Integer.parseInt(m.group(1));
@@ -135,7 +135,7 @@ public static MyDate parse(String txt) {
135135
date.Minute = Integer.parseInt(m.group(5));
136136
return date;
137137
}
138-
m = Pattern.compile("(\\d{4})-(11|12|0?\\d)-(30|31|[012]?\\d)").matcher(t);
138+
m = Pattern.compile("(\\d{4})-(10|11|12|0?\\d)-(30|31|[012]?\\d)").matcher(t);
139139
if (m.find()) {
140140
MyDate date = new MyDate();
141141
date.Year = Integer.parseInt(m.group(1));

java/toolgood.algorithm/src/test/java/toolgood/algorithm/Tests/AlgorithmEngineTest_dateTime.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,14 @@ public void DATEDIF_Test()
192192
dt = engine.TryEvaluate("DATEDIF('1975-1-30','2017-1-7','d')", 0);
193193
assertEquals(dt, 15318);
194194

195+
dt = engine.TryEvaluate("DATEDIF('2023-9-30','2023-10-2','d')", 0);
196+
assertEquals(dt, 2);
197+
198+
dt = engine.TryEvaluate("DATEDIF('2023-9-30 11:25','2023-10-2 00:01','d')", 0);
199+
assertEquals(dt, 1);
200+
201+
dt = engine.TryEvaluate("DATEDIF('2023-9-30 11:25:45','2023-10-2 00:01:16','d')", 0);
202+
assertEquals(dt, 1);
195203

196204
dt = engine.TryEvaluate("DATEDIF('1975-1-30','2017-1-7','yd')", 0);
197205
assertEquals(dt, 342);

0 commit comments

Comments
 (0)