comparison backend/src/main/java/org/dive4elements/river/utils/DateGuesser.java @ 5895:4110565baff8

backend: Fixed DateGuesser for DDMMYY.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 03 May 2013 12:51:29 +0200
parents 7100059790df
children 4c3ccf2b0304
comparison
equal deleted inserted replaced
5894:62e6598a2c4b 5895:4110565baff8
52 52
53 public static final Pattern DD_MM_YYYYThh_mm_ss = 53 public static final Pattern DD_MM_YYYYThh_mm_ss =
54 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})T(\\d{1,2}):(\\d{2}):(\\d{2})$"); 54 Pattern.compile("^(\\d{1,2})\\.(\\d{1,2})\\.(\\d{2,4})T(\\d{1,2}):(\\d{2}):(\\d{2})$");
55 55
56 public static final Pattern DDMMYY = 56 public static final Pattern DDMMYY =
57 Pattern.compile("^(\\d{1,2})(\\d{1,2})(\\d{1,2})$"); 57 Pattern.compile("^(\\d{2})(\\d{2})(\\d{2})$");
58 58
59 private DateGuesser() { 59 private DateGuesser() {
60 } 60 }
61 61
62 public static final int calendarMonth(String month) { 62 public static final int calendarMonth(String month) {
85 if (m.matches()) { 85 if (m.matches()) {
86 Calendar cal = Calendar.getInstance(); 86 Calendar cal = Calendar.getInstance();
87 String year = m.group(1); 87 String year = m.group(1);
88 String month = m.group(2); 88 String month = m.group(2);
89 String day = m.group(3); 89 String day = m.group(3);
90 cal.clear(); 90 cal.clear();
91 cal.set( 91 cal.set(
92 Integer.parseInt(year), 92 Integer.parseInt(year),
93 calendarMonth(month), 93 calendarMonth(month),
94 Integer.parseInt(day), 94 Integer.parseInt(day),
95 12, 0, 0); 95 12, 0, 0);
101 if (m.matches()) { 101 if (m.matches()) {
102 Calendar cal = Calendar.getInstance(); 102 Calendar cal = Calendar.getInstance();
103 String year = m.group(3); 103 String year = m.group(3);
104 String month = m.group(2); 104 String month = m.group(2);
105 String day = m.group(1); 105 String day = m.group(1);
106 cal.clear(); 106 cal.clear();
107 cal.set( 107 cal.set(
108 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), 108 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
109 calendarMonth(month), 109 calendarMonth(month),
110 Integer.parseInt(m.group(1)), 110 Integer.parseInt(day),
111 12, 0, 0); 111 12, 0, 0);
112 return cal.getTime(); 112 return cal.getTime();
113 } 113 }
114 114
115 m = MMM_YYYY.matcher(s); 115 m = MMM_YYYY.matcher(s);
118 int month = guessMonth(m.group(2)); 118 int month = guessMonth(m.group(2));
119 if (month >= 0) { 119 if (month >= 0) {
120 Calendar cal = Calendar.getInstance(); 120 Calendar cal = Calendar.getInstance();
121 String year = m.group(3); 121 String year = m.group(3);
122 String day = m.group(1); 122 String day = m.group(1);
123 cal.clear(); 123 cal.clear();
124 cal.set( 124 cal.set(
125 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), 125 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
126 month, 126 month,
127 day.length() == 0 ? 15 : Integer.parseInt(day), 127 day.length() == 0 ? 15 : Integer.parseInt(day),
128 12, 0, 0); 128 12, 0, 0);
137 String year = m.group(1); 137 String year = m.group(1);
138 String month = m.group(2); 138 String month = m.group(2);
139 String day = m.group(3); 139 String day = m.group(3);
140 String hour = m.group(4); 140 String hour = m.group(4);
141 String minute = m.group(5); 141 String minute = m.group(5);
142 cal.clear(); 142 cal.clear();
143 cal.set( 143 cal.set(
144 Integer.parseInt(year), 144 Integer.parseInt(year),
145 calendarMonth(month), 145 calendarMonth(month),
146 Integer.parseInt(day), 146 Integer.parseInt(day),
147 Integer.parseInt(hour), 147 Integer.parseInt(hour),
159 String month = m.group(2); 159 String month = m.group(2);
160 String day = m.group(3); 160 String day = m.group(3);
161 String hour = m.group(4); 161 String hour = m.group(4);
162 String minute = m.group(5); 162 String minute = m.group(5);
163 String second = m.group(6); 163 String second = m.group(6);
164 cal.clear(); 164 cal.clear();
165 cal.set( 165 cal.set(
166 Integer.parseInt(year), 166 Integer.parseInt(year),
167 calendarMonth(month), 167 calendarMonth(month),
168 Integer.parseInt(day), 168 Integer.parseInt(day),
169 Integer.parseInt(hour), 169 Integer.parseInt(hour),
180 String year = m.group(3); 180 String year = m.group(3);
181 String month = m.group(2); 181 String month = m.group(2);
182 String day = m.group(1); 182 String day = m.group(1);
183 String hour = m.group(4); 183 String hour = m.group(4);
184 String minute = m.group(5); 184 String minute = m.group(5);
185 cal.clear(); 185 cal.clear();
186 cal.set( 186 cal.set(
187 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), 187 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
188 calendarMonth(month), 188 calendarMonth(month),
189 Integer.parseInt(day), 189 Integer.parseInt(day),
190 Integer.parseInt(hour), 190 Integer.parseInt(hour),
202 String month = m.group(2); 202 String month = m.group(2);
203 String day = m.group(1); 203 String day = m.group(1);
204 String hour = m.group(4); 204 String hour = m.group(4);
205 String minute = m.group(5); 205 String minute = m.group(5);
206 String second = m.group(6); 206 String second = m.group(6);
207 cal.clear(); 207 cal.clear();
208 cal.set( 208 cal.set(
209 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), 209 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
210 calendarMonth(month), 210 calendarMonth(month),
211 Integer.parseInt(day), 211 Integer.parseInt(day),
212 Integer.parseInt(hour), 212 Integer.parseInt(hour),
229 year += 2000; 229 year += 2000;
230 } 230 }
231 else { 231 else {
232 year += 1900; 232 year += 1900;
233 } 233 }
234 cal.clear(); 234 cal.clear();
235 cal.set( 235 cal.set(
236 year, 236 year,
237 Integer.parseInt(month), // month 237 Integer.parseInt(month), // month
238 Integer.parseInt(day), // day 238 Integer.parseInt(day), // day
239 12, 0, 0); 239 12, 0, 0);
243 m = GARBAGE_YYYY.matcher(s); 243 m = GARBAGE_YYYY.matcher(s);
244 244
245 if (m.matches()) { 245 if (m.matches()) {
246 Calendar cal = Calendar.getInstance(); 246 Calendar cal = Calendar.getInstance();
247 String year = m.group(1); 247 String year = m.group(1);
248 cal.clear(); 248 cal.clear();
249 cal.set( 249 cal.set(
250 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0), 250 Integer.parseInt(year) + (year.length() == 2 ? 1900 : 0),
251 5, // month 251 5, // month
252 15, // day 252 15, // day
253 12, 0, 0); 253 12, 0, 0);

http://dive4elements.wald.intevation.org