@Override public Long convertToAvro(String value) { Date date = null; if (!StringUtils.isEmpty(value)) { date = ParserUtils.parseToDate(value, pattern, !isLenient); } if (date != null) { return date.getTime(); } else { return null; } }
@Test public void testParseToDate() throws Exception { // Parse date lenient. The wrong month number would be ignore Date date1 = ParserUtils.parseToDate("1988-02-30", "yyyy-MM-dd", true); assertEquals("1988-03-01", FormatterUtils.formatDate(date1, "yyyy-MM-dd")); try { // Parse date strict. "1988-20" with wrong month number would throw a exception ParserUtils.parseToDate("1988-20", "yyyy-MM", false); fail("Except get exception: Unparseable date: \"1988-20\""); } catch (Exception e) { assertEquals(RuntimeException.class, e.getClass()); LOG.debug("Except exception:" + e.getMessage()); } Date date2 = ParserUtils.parseToDate("1987-06-21", "yyyy-MM-dd", true); assertEquals("1987-06-21", FormatterUtils.formatDate(date2, "yyyy-MM-dd")); Date date3 = ParserUtils.parseToDate("1987-06-21 12:21:22", "yyyy-MM-dd hh:mm:ss", true); assertEquals("1987-06-21 12:21:22", FormatterUtils.formatDate(date3, "yyyy-MM-dd hh:mm:ss")); Date date4 = ParserUtils.parseToDate("1987-06-21 12:21:22.123", "yyyy-MM-dd hh:mm:ss.SSS", true); assertEquals("1987-06-21 12:21:22.123", FormatterUtils.formatDate(date4, "yyyy-MM-dd hh:mm:ss.SSS")); }