You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Andrea Ligios (JIRA)" <ji...@apache.org> on 2015/10/07 16:10:26 UTC

[jira] [Created] (WW-4551) Allowing conversion of RFC3339 dates with date part only (yyyy-MM-dd) as per HTML5 and w3 standard for (and others).

Andrea Ligios created WW-4551:
---------------------------------

             Summary: Allowing conversion of RFC3339 dates with date part only (yyyy-MM-dd) as per HTML5 and w3 standard for <input type="date" /> (and others).
                 Key: WW-4551
                 URL: https://issues.apache.org/jira/browse/WW-4551
             Project: Struts 2
          Issue Type: Improvement
          Components: Core Actions
    Affects Versions: 2.3.24
            Reporter: Andrea Ligios
             Fix For: 2.3.x


Facts:

- {code:xml}<input type="date" />{code} is the HTML5 standard for inputing dates. It works in many browsers: Chrome, Opera, almost every mobile browsers - where it is fundamental - and the coverage can only grow. 

- [w3 has chosen the RFC3339 *with date only*|http://www.w3.org/TR/html-markup/input.date.html#input.date.attrs.value] as *value format* {code}yyyy-MM-dd{code} while transparently handling the *display format* according to the Locale. 

This means that, for example, americans see {code}MM/dd/yyyy{code}, italians see {code}dd/MM/yyyy{code}, but both of them send {code}yyyy-MM-dd{code} to the server. *Without the time part*.

- Struts Date Converter already works for: 

{code:title=DateConverter.java|borderStyle=solid}
DateFormat dt1 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
        DateFormat dt2 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, locale);
        DateFormat dt3 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);

        DateFormat d1 = DateFormat.getDateInstance(DateFormat.SHORT, locale);
        DateFormat d2 = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
        DateFormat d3 = DateFormat.getDateInstance(DateFormat.LONG, locale);

        DateFormat rfc3339 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
{code}

with a final fallback to {code:java}DateFormat.SHORT{code} if nothing worked (in case of Time and Timestamps too).

My idea is: can we add the support for *date-only RFC3339*, that is the one sent by the browser, *in addition* to the ones already there ? No existing code would break, and we'd have a standard, automatic conversion for a popular, growing *standard*.

I can't see any cons. Can you ?



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