diff --git a/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache
index 16fd2a495a75b0e44bfa6fb12d260c2f793a3ef2..cacd793e738a34107e5f3074c4188084d9e83a51 100644
--- a/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache
@@ -1,21 +1,44 @@
 {{>licenseInfo}}
 package {{invokerPackage}};
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/RFC3339DateFormat.mustache
index 061e000f5a24e7ec76e903df1779bf054fd2d4ca..76ede2dc0061993bceaf2a7da43e12671b62503c 100644
--- a/modules/openapi-generator/src/main/resources/JavaJaxRS/RFC3339DateFormat.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/RFC3339DateFormat.mustache
@@ -1,19 +1,38 @@
 package {{apiPackage}};
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-    // Same as ISO8601DateFormat but serializing milliseconds.
-    @Override
-    public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-        String value = ISO8601Utils.format(date, true);
-        toAppendTo.append(value);
-        return toAppendTo;
-    }
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
 
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
+
+  @Override
+  public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+    return fmt.format(date, toAppendTo, fieldPosition);
+  }
+
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/RFC3339DateFormat.mustache
index 11dc552692c41a006e5579596c04943769515091..8373f57b54796b7e7233d035b005ba3352b21213 100644
--- a/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/RFC3339DateFormat.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/resteasy/RFC3339DateFormat.mustache
@@ -1,19 +1,38 @@
 package {{invokerPackage}};
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-    // Same as ISO8601DateFormat but serializing milliseconds.
-    @Override
-    public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-        String value = ISO8601Utils.format(date, true);
-        toAppendTo.append(value);
-        return toAppendTo;
-    }
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
 
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
+
+  @Override
+  public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+    return fmt.format(date, toAppendTo, fieldPosition);
+  }
+
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/RFC3339DateFormat.mustache
index d5dff8ac6314e9a4baa40ee775f8857d44276497..b1a5cb59e550066ef65bcc5bb3ee887d57a48aab 100644
--- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/RFC3339DateFormat.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/RFC3339DateFormat.mustache
@@ -1,22 +1,38 @@
 package {{basePackage}};
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
 
-  private static final long serialVersionUID = 1L;
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-mvc/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-mvc/RFC3339DateFormat.mustache
index 597120b5b239482cde290588a79815eb4332c809..84897b70d400cbfd5c789ddf0350ec92608a6b09 100644
--- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-mvc/RFC3339DateFormat.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-mvc/RFC3339DateFormat.mustache
@@ -1,22 +1,38 @@
 package {{configPackage}};
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
 
-  private static final long serialVersionUID = 1L;
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/java-msf4j-server/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/java-msf4j-server/RFC3339DateFormat.mustache
index 061e000f5a24e7ec76e903df1779bf054fd2d4ca..76ede2dc0061993bceaf2a7da43e12671b62503c 100644
--- a/modules/openapi-generator/src/main/resources/java-msf4j-server/RFC3339DateFormat.mustache
+++ b/modules/openapi-generator/src/main/resources/java-msf4j-server/RFC3339DateFormat.mustache
@@ -1,19 +1,38 @@
 package {{apiPackage}};
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-    // Same as ISO8601DateFormat but serializing milliseconds.
-    @Override
-    public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-        String value = ISO8601Utils.format(date, true);
-        toAppendTo.append(value);
-        return toAppendTo;
-    }
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
 
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
+
+  @Override
+  public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+    return fmt.format(date, toAppendTo, fieldPosition);
+  }
+
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/RFC3339DateFormat.mustache
index afe24ed9aba91af7f400c163d90de45a7b4c6a55..b1a5cb59e550066ef65bcc5bb3ee887d57a48aab 100644
--- a/modules/openapi-generator/src/main/resources/java-pkmst/RFC3339DateFormat.mustache
+++ b/modules/openapi-generator/src/main/resources/java-pkmst/RFC3339DateFormat.mustache
@@ -1,20 +1,38 @@
 package {{basePackage}};
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/feign10x/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/feign10x/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/feign10x/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/feign10x/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/jersey1/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/jersey1/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/jersey1/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/jersey1/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/rest-assured-jackson/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/rest-assured-jackson/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/rest-assured-jackson/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/rest-assured-jackson/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/retrofit2-play26/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file
diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 9509fd0898120391ab638d05bfd4014a2150addf..07d7e782b0da1f103e2080f8220cd247c95f4985 100644
--- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -12,21 +12,44 @@
 
 package org.openapitools.client;
 
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
-import com.fasterxml.jackson.databind.util.ISO8601Utils;
+import com.fasterxml.jackson.databind.util.StdDateFormat;
 
+import java.text.DateFormat;
 import java.text.FieldPosition;
+import java.text.ParsePosition;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
 
+public class RFC3339DateFormat extends DateFormat {
+  private static final long serialVersionUID = 1L;
+  private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
 
-public class RFC3339DateFormat extends ISO8601DateFormat {
+  private final StdDateFormat fmt = new StdDateFormat()
+          .withTimeZone(TIMEZONE_Z)
+          .withColonInTimeZone(true);
+
+  public RFC3339DateFormat() {
+    this.calendar = new GregorianCalendar();
+  }
+
+  @Override
+  public Date parse(String source) {
+    return parse(source, new ParsePosition(0));
+  }
+
+  @Override
+  public Date parse(String source, ParsePosition pos) {
+    return fmt.parse(source, pos);
+  }
 
-  // Same as ISO8601DateFormat but serializing milliseconds.
   @Override
   public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
-    String value = ISO8601Utils.format(date, true);
-    toAppendTo.append(value);
-    return toAppendTo;
+    return fmt.format(date, toAppendTo, fieldPosition);
   }
 
+  @Override
+  public Object clone() {
+    return this;
+  }
 }
\ No newline at end of file