Skip to content

Commit 17e59d9

Browse files
committed
GraphQLDateCoercing optionally takes a date format mask to use instead of DateFormat.getInstance()'s default SHORT pattern
1 parent 6407149 commit 17e59d9

File tree

1 file changed

+21
-1
lines changed
  • graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema

1 file changed

+21
-1
lines changed

graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalars.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.math.BigInteger;
2020
import java.text.DateFormat;
2121
import java.text.ParseException;
22+
import java.text.SimpleDateFormat;
2223
import java.time.Instant;
2324
import java.time.LocalDate;
2425
import java.time.LocalDateTime;
@@ -194,6 +195,25 @@ private LocalDate parseStringToLocalDate(String input) {
194195
};
195196

196197
public static class GraphQLDateCoercing implements Coercing<Object, Object> {
198+
final DateFormat df;
199+
200+
201+
/**
202+
* Parse date strings matching DateFormat's locale-sensitive SHORT pattern,
203+
* see: https://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html
204+
*/
205+
public GraphQLDateCoercing() {
206+
df = DateFormat.getInstance();
207+
}
208+
209+
/**
210+
* Parse date strings according to the provided SimpleDateFormat pattern
211+
*
212+
* @param dateFormatString e.g. "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" for "2001-07-04T12:08:56.235-07:00"
213+
*/
214+
public GraphQLDateCoercing(String dateFormatString) {
215+
df = new SimpleDateFormat(dateFormatString);
216+
}
197217

198218
@Override
199219
public Object serialize(Object input) {
@@ -227,7 +247,7 @@ public Object parseLiteral(Object input) {
227247

228248
private Date parseStringToDate(String input) {
229249
try {
230-
return DateFormat.getInstance().parse(input);
250+
return df.parse(input);
231251
} catch (ParseException e) {
232252
log.warn("Failed to parse Date from input: " + input, e);
233253
return null;

0 commit comments

Comments
 (0)