Steve Lawrence is on the Daffodil Open Source DFDL team (on CC), and he has dug into date/time types.

He raised some concerns to me that I really haven't been tracking at all, so I wanted to put in front of the rest of the group.

The date time format syntax for the latest version of icu4j contains a 'U'
character, which means "cyclic year name". However, the daffodil
spec says the 'U' character, following a Z makes it so a timezone of UTC
is represented as Z instead of +00:00.

This seems to be a conflict, and would prevent us from ever upgrading to
the newest version of ICU (which might be a good idea).

I will point out that the latest version of ICU supports ZZZZZ (5 Z's),
which is the ISO8601 timezone format. This doesn't add all the
functionality that the DFDL 'U' gives. My question is, is this enough?
Are there cases where the ZU, ZZU, etc. are necessary? I'm just
concerned that the U is going to quite a bit more complexity, and want
to make sure the updates to latest ICU don't address the DFDL-WG concerns.

And if we still need the 'U', maybe it should change to a different
letter to prevent conflicts with the latest ICU4J?

I would point out that the ICU pattern language cannot deal with dual-purpose letters very well, i.e., ambiguities are introduced if the same letter both introduces a format, and if following another format string, modifies its behavior. E.g., does ZU mean Z modified by U, or Z first, and then U. So it seems pretty unfortunate if the ICU libraries added a conflicting use of letter U.

I believe the point of DFDL's use of the U modifier for letters I and Z was to be absolutely clear on the GMT timezone 'Z' issue, i.e., to indicate that 'Z' is to be used, and -00:00 is not to be output, nor accepted when parsing. The ICU specification ZZZZZ says ISO format, but that allows either 'Z' or -00:00 to be used for GMT timezone, and it's not clear what it means on output.

--
Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology | www.tresys.com