All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.jackson.databind.util.ISO8601DateFormat Maven / Gradle / Ivy

There is a newer version: 2.17.0
Show newest version
package com.fasterxml.jackson.databind.util;

import java.text.*;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * Provide a fast thread-safe formatter/parser DateFormat for ISO8601 dates ONLY.
 * It was mainly done to be used with Jackson JSON Processor.
 * 

* Watch out for clone implementation that returns itself. *

* All other methods but parse and format and clone are undefined behavior. * * @see ISO8601Utils */ public class ISO8601DateFormat extends DateFormat { private static final long serialVersionUID = 1L; // those classes are to try to allow a consistent behavior for hascode/equals and other methods private static Calendar CALENDAR = new GregorianCalendar(); private static NumberFormat NUMBER_FORMAT = new DecimalFormat(); public ISO8601DateFormat() { this.numberFormat = NUMBER_FORMAT; this.calendar = CALENDAR; } @Override public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { String value = ISO8601Utils.format(date); toAppendTo.append(value); return toAppendTo; } @Override public Date parse(String source, ParsePosition pos) { // index must be set to other than 0, I would swear this requirement is not there in // some version of jdk 6. pos.setIndex(source.length()); return ISO8601Utils.parse(source); } @Override public Object clone() { return this; // jackson calls clone everytime. We are threadsafe so just returns the instance } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy