diff --git a/CHANGELOG.md b/CHANGELOG.md index fd5b435c116..3e509fb999a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# ### Changed - [#1026](https://github.com/JabRef/jabref/issues/1026) JabRef does no longer delete user comments outside of BibTeX entries and strings +- [#1249](https://github.com/JabRef/jabref/issues/1249) Date layout formatter added ### Fixed - Fixed [#1264](https://github.com/JabRef/jabref/issues/1264): S with caron does not render correctly diff --git a/src/main/java/net/sf/jabref/logic/layout/format/DateFormatter.java b/src/main/java/net/sf/jabref/logic/layout/format/DateFormatter.java new file mode 100644 index 00000000000..5282c55fd52 --- /dev/null +++ b/src/main/java/net/sf/jabref/logic/layout/format/DateFormatter.java @@ -0,0 +1,26 @@ +package net.sf.jabref.logic.layout.format; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import net.sf.jabref.logic.layout.ParamLayoutFormatter; + + +public class DateFormatter implements ParamLayoutFormatter { + + private String formatString = "yyyy-MM-dd"; // Use ISO-format as default + + + @Override + public String format(String fieldText) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(formatString); + LocalDate date = LocalDate.parse(fieldText, DateTimeFormatter.ISO_LOCAL_DATE); + return date.format(formatter); + } + + @Override + public void setArgument(String arg) { + formatString = arg; + } + +} diff --git a/src/test/java/net/sf/jabref/logic/layout/format/DateFormatterTest.java b/src/test/java/net/sf/jabref/logic/layout/format/DateFormatterTest.java new file mode 100644 index 00000000000..fe67f1a5a5f --- /dev/null +++ b/src/test/java/net/sf/jabref/logic/layout/format/DateFormatterTest.java @@ -0,0 +1,29 @@ +package net.sf.jabref.logic.layout.format; + +import net.sf.jabref.logic.layout.ParamLayoutFormatter; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class DateFormatterTest { + + private ParamLayoutFormatter formatter; + + @Before + public void setUp() { + formatter = new DateFormatter(); + } + + @Test + public void testDefaultFormat() { + Assert.assertEquals("2016-07-15", formatter.format("2016-07-15")); + } + + @Test + public void testRequestedFormat() { + formatter.setArgument("MM/yyyy"); + Assert.assertEquals("07/2016", formatter.format("2016-07-15")); + } + +}