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.22.2
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. /* 03-Nov-2013, tatu: I can't see this having any direct effect * here... I am guessing it marks things as consumed but why? */ pos.setIndex(source.length()); return ISO8601Utils.parse(source); } @Override public Object clone() { /* Jackson calls clone for every call. Since this instance is * immutable (and hence thread-safe) * we can just return this instance */ return this; } @Override public String toString() { return getClass().getName(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy