[ 
https://issues.apache.org/jira/browse/GROOVY-6854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14572793#comment-14572793
 ] 

Eric Rodriguez commented on GROOVY-6854:
----------------------------------------

Given the bugfix [GROOVY-7143] the workaround is not possible anymore and there 
is no way to override the SimpleDateFormat to comply with ISO 8601
https://github.com/groovy/groovy-core/commit/0dddc1799c893011ddfe08ac87260f796cc7bc24

Can you please consider to support Java 7.0 format or at least add a way to 
define the dateformat to  "yyyy-MM-dd'T'HH:mm:ss.SSSXXX".
{code}
SimpleDateFormat formatter = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
formatter.setTimeZone(TimeZone.getTimeZone('UTC'))
{code}
instead of the US version:
{code}
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", 
Locale.US);
formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
{code}


> JsonOutput should be configurable with ISO 8601 UTC time zone instead of GMT
> ----------------------------------------------------------------------------
>
>                 Key: GROOVY-6854
>                 URL: https://issues.apache.org/jira/browse/GROOVY-6854
>             Project: Groovy
>          Issue Type: Bug
>          Components: JSON
>    Affects Versions: 2.3.2
>            Reporter: george coller
>            Priority: Minor
>              Labels: json
>
> I believe ISO 8601 prefers the use of UTC over GMT as described in 
> [http://en.wikipedia.org/wiki/ISO_8601#Dates]:
> {quote}
> Time zones in ISO 8601 are represented as local time (with the location 
> unspecified), as UTC, or as an offset from UTC.
> {quote}
> GMT while similar, isn't exactly UTC.  For example in GMT will format a date 
> as: 
> {code}
> 2014-03-12T19:02:35+0000
> {code}
> instead of the arguably nicer 'Z' for UTC
> {code}
> 2014-03-12T19:02:35Z
> {code}
> Java 7 introduced the "X" flag to use instead of the "Z" flag (which is RFC 
> 822, not ISO 8601) for {{SimpleDateFormat}}, which finally made the class ISO 
> 8601 compatible.
> Currently our team uses this workaround for {{JsonOutput}} to get it to 
> format ISO dates correctly: 
> {code}
>         def p = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX")
>         p.setTimeZone(TimeZone.getTimeZone('UTC'))
>         JsonOutput.dateFormatter.set(p)
> {code}
> I believe this should be the default for JsonOutput, with some sort of 
> workaround available for Groovy users who are on JDK6 or earlier.
> If using JDK8 the new date/time library classes should probably be used 
> instead.
> The JsonOutput class should really be reconsidered to be a candidate for 
> refactoring to a more extendable structure.  The limitations of it being an 
> all-static utility class are apparent with its current date handling and also 
> because it doesn't clients to extend it to print their own custom classes as 
> well.   The current method of just dumping all properties is often too 
> verbose.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to