- try
- {
- date = ALL_DATE_FORMATS[i].parse(inString);
- CALENDAR.setTime(date);
- _seconds = CALENDAR.getTimeInMillis() / 1000L;
- _valid = true;
+ long rawValue = Long.parseLong(inString.trim());
+ _milliseconds = getMilliseconds(rawValue);
+ return true;
+ }
+ catch (NumberFormatException nfe)
+ {}
+ break;
+
+ case ISO8601_FRACTIONAL:
+ final Matcher fmatcher = ISO8601_FRACTIONAL_PATTERN.matcher(inString);
+ if (fmatcher.matches())
+ {
+ try {
+ _milliseconds = getMilliseconds(Integer.parseInt(fmatcher.group(1)), // year
+ Integer.parseInt(fmatcher.group(2)), // month
+ Integer.parseInt(fmatcher.group(3)), // day
+ Integer.parseInt(fmatcher.group(4)), // hour
+ Integer.parseInt(fmatcher.group(5)), // minute
+ Integer.parseInt(fmatcher.group(6)), // second
+ fmatcher.group(7), // fractional seconds
+ fmatcher.group(8)); // timezone, if any
+ return true;