Revision 52078
Added by Alessia Bardi almost 6 years ago
modules/dnet-mapreduce-jobs/branches/beta/src/main/java/eu/dnetlib/data/mapreduce/hbase/oai/OaiFeedMapper.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.io.IOException; |
4 | 4 |
import java.net.UnknownHostException; |
5 |
import java.text.ParseException; |
|
5 |
import java.time.LocalDateTime; |
|
6 |
import java.time.ZoneId; |
|
7 |
import java.time.format.DateTimeFormatter; |
|
6 | 8 |
import java.util.Collection; |
7 | 9 |
import java.util.Date; |
8 | 10 |
import java.util.Map; |
... | ... | |
179 | 181 |
} |
180 | 182 |
} |
181 | 183 |
|
182 |
protected Date parseDate(final String date){ |
|
184 |
protected Date parseDate(final String date) { |
|
185 |
// date should be in the form: 2017-12-18 or 2017-12-18T12:00:04+00:00 or 2014-10-12T15:54:02.43Z or 2014-10-12T15:54:02.432Z or 2014-10-12T15:54:02.4Z |
|
183 | 186 |
try { |
184 |
// date will be in the form: 2017-12-18T12:00:04+00:00 or 2014-10-12T15:54:02.43Z |
|
185 |
return org.apache.commons.lang.time.DateUtils.parseDate( |
|
186 |
date, |
|
187 |
new String[]{ "yyyy-MM-dd'T'HH:mm:ssXXX", "yyyy-MM-dd'T'HH:mm:ssZ" }); |
|
188 |
} catch (ParseException e) { |
|
189 |
e.printStackTrace(System.err); |
|
190 |
throw new RuntimeException(e); |
|
187 |
LocalDateTime d = LocalDateTime.parse(date, DateTimeFormatter.ISO_ZONED_DATE_TIME); |
|
188 |
return Date.from(d.atZone(ZoneId.systemDefault()).toInstant()); |
|
189 |
}catch(Exception dateException){ |
|
190 |
try { |
|
191 |
return org.apache.commons.lang.time.DateUtils.parseDate( |
|
192 |
date, |
|
193 |
new String[] { "yyyy-MM-dd", "yyyy-MM-dd'T'HH:mm:ssXXX", "yyyy-MM-dd'T'HH:mm:ss.SSSX", "yyyy-MM-dd'T'HH:mm:ssZ", |
|
194 |
"yyyy-MM-dd'T'HH:mm:ss.SX" }); |
|
195 |
}catch(Exception dateException2){ |
|
196 |
dateException2.printStackTrace(System.err); |
|
197 |
throw new RuntimeException(dateException2); |
|
198 |
} |
|
191 | 199 |
} |
192 | 200 |
} |
193 | 201 |
|
modules/dnet-oai-store-service/trunk/src/test/java/eu/dnetlib/data/oai/store/mongo/RecordInfoGeneratorTest.java | ||
---|---|---|
17 | 17 |
import org.junit.Test; |
18 | 18 |
import org.springframework.core.io.ClassPathResource; |
19 | 19 |
|
20 |
import static java.time.format.DateTimeFormatter.ofPattern; |
|
21 |
|
|
20 | 22 |
/** |
21 | 23 |
* RecordInfoGenerator Tester. |
22 | 24 |
* |
... | ... | |
52 | 54 |
public void parseDatestamp(){ |
53 | 55 |
String thedate = "2018-02-13T15:02:16.122Z"; |
54 | 56 |
//Because DateTimeFormatter.ISO_INSTANT does not work |
55 |
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");
|
|
57 |
DateTimeFormatter dtf = ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX"); |
|
56 | 58 |
//DateTimeFormatter formatter = new DateTimeFormatterBuilder(DateTimeFormatter.ISO_INSTANT).appendInstant(3).toFormatter(); |
57 | 59 |
LocalDateTime d = LocalDateTime.parse(thedate, dtf); |
58 | 60 |
Date utilDate = Date.from(d.atZone(ZoneId.systemDefault()).toInstant()); |
... | ... | |
72 | 74 |
String theDate = "2018-02-13T15:02:16.122Z"; |
73 | 75 |
// org.apache.commons.lang.time.DateUtils.parseDate( |
74 | 76 |
// theDate, |
75 |
// new String[]{ "yyyy-MM-dd'T'HH:mm:ss.SX" }); |
|
77 |
// new String[]{ "yyyy-MM-dd'T'HH:mm:ss.SSSX" });
|
|
76 | 78 |
gen.parseDate(theDate); |
77 | 79 |
} |
78 | 80 |
|
79 | 81 |
|
82 |
@Test |
|
83 |
public void parseDatestamp3() throws ParseException { |
|
84 |
String theDate = "2017-12-12T17:06:28.537+01:00"; |
|
85 |
// LocalDateTime d = LocalDateTime.parse(theDate, DateTimeFormatter.ISO_ZONED_DATE_TIME); |
|
86 |
// Date utilDate = Date.from(d.atZone(ZoneId.systemDefault()).toInstant()); |
|
87 |
gen.parseDate(theDate); |
|
88 |
} |
|
80 | 89 |
|
90 |
|
|
81 | 91 |
private Binary createCompressRecord(final String record) throws IOException { |
82 | 92 |
ByteArrayOutputStream os = new ByteArrayOutputStream(); |
83 | 93 |
ZipOutputStream zos = new ZipOutputStream(os); |
Also available in: Unified diff
We also have some date as ISO DateTime with Zone...