Skip to content

Commit 42e2819

Browse files
Improved date formatter
1 parent cdf1687 commit 42e2819

3 files changed

Lines changed: 35 additions & 7 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ and the dependency:
2323
<dependency>
2424
<groupId>com.mauriciotogneri</groupId>
2525
<artifactId>javautils</artifactId>
26-
<version>0.4.0</version>
26+
<version>0.5.0</version>
2727
</dependency>
2828
```
2929

@@ -32,6 +32,6 @@ or if you use Gradle:
3232
```groovy
3333
dependencies
3434
{
35-
compile 'com.mauriciotogneri:javautils:0.4.0'
35+
compile 'com.mauriciotogneri:javautils:0.5.0'
3636
}
3737
```

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<modelVersion>4.0.0</modelVersion>
88
<groupId>com.mauriciotogneri</groupId>
99
<artifactId>javautils</artifactId>
10-
<version>0.4.0</version>
10+
<version>0.5.0</version>
1111
<name>Java Utils</name>
1212
<packaging>jar</packaging>
1313
<url>https://github.com/mauriciotogneri/java-utils</url>

src/main/java/com/mauriciotogneri/javautils/FormattedDateTime.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,56 @@
44
import org.joda.time.DateTimeZone;
55
import org.joda.time.format.DateTimeFormat;
66
import org.joda.time.format.DateTimeFormatter;
7+
import org.joda.time.format.DateTimeFormatterBuilder;
8+
import org.joda.time.format.DateTimeParser;
79

810
import java.util.Locale;
911

1012
public class FormattedDateTime
1113
{
1214
private final DateTimeFormatter formatter;
1315

14-
public FormattedDateTime(DateTimeFormatter formatter)
16+
public FormattedDateTime(DateTimeFormatter formatter, DateTimeFormatter... formatters)
1517
{
16-
this.formatter = formatter;
18+
this.formatter = new DateTimeFormatterBuilder().append(formatter.getPrinter(), parsers(formatter, formatters)).toFormatter();
1719
}
1820

19-
public FormattedDateTime(String pattern)
21+
public FormattedDateTime(String pattern, String... patterns)
2022
{
21-
this(DateTimeFormat.forPattern(pattern));
23+
this.formatter = new DateTimeFormatterBuilder().append(DateTimeFormat.forPattern(pattern).getPrinter(), parsers(pattern, patterns)).toFormatter();
2224
}
2325

2426
public FormattedDateTime()
2527
{
2628
this("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
2729
}
2830

31+
private DateTimeParser[] parsers(DateTimeFormatter formatter, DateTimeFormatter... formatters)
32+
{
33+
DateTimeParser[] parsers = new DateTimeParser[formatters.length + 1];
34+
parsers[0] = formatter.getParser();
35+
36+
for (int i = 0; i < formatters.length; i++)
37+
{
38+
parsers[i + 1] = formatters[i].getParser();
39+
}
40+
41+
return parsers;
42+
}
43+
44+
private DateTimeParser[] parsers(String pattern, String... patterns)
45+
{
46+
DateTimeParser[] parsers = new DateTimeParser[patterns.length + 1];
47+
parsers[0] = DateTimeFormat.forPattern(pattern).getParser();
48+
49+
for (int i = 0; i < patterns.length; i++)
50+
{
51+
parsers[i + 1] = DateTimeFormat.forPattern(patterns[i]).getParser();
52+
}
53+
54+
return parsers;
55+
}
56+
2957
// ============================================================================================
3058

3159
public String date(DateTime dateTime, DateTimeZone timeZone, Locale locale, String defaultValue)

0 commit comments

Comments
 (0)