1462 * qqq 3 appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.SHORT_STANDALONE)
1463 * qqqq 4 appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.FULL_STANDALONE)
1464 * qqqqq 5 appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.NARROW_STANDALONE)
1465 *
1466 * M 1 appendValue(ChronoField.MONTH_OF_YEAR)
1467 * MM 2 appendValue(ChronoField.MONTH_OF_YEAR, 2)
1468 * MMM 3 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)
1469 * MMMM 4 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.FULL)
1470 * MMMMM 5 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.NARROW)
1471 * L 1 appendValue(ChronoField.MONTH_OF_YEAR)
1472 * LL 2 appendValue(ChronoField.MONTH_OF_YEAR, 2)
1473 * LLL 3 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT_STANDALONE)
1474 * LLLL 4 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.FULL_STANDALONE)
1475 * LLLLL 5 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.NARROW_STANDALONE)
1476 *
1477 * w 1 append special localized WeekFields element for numeric week-of-year
1478 * ww 2 append special localized WeekFields element for numeric week-of-year, zero-padded
1479 * W 1 append special localized WeekFields element for numeric week-of-month
1480 * d 1 appendValue(ChronoField.DAY_OF_MONTH)
1481 * dd 2 appendValue(ChronoField.DAY_OF_MONTH, 2)
1482 * D 1 appendValue(ChronoField.DAY_OF_YEAR)
1483 * DD 2 appendValue(ChronoField.DAY_OF_YEAR, 2)
1484 * DDD 3 appendValue(ChronoField.DAY_OF_YEAR, 3)
1485 * F 1 appendValue(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)
1486 * g..g 1..n appendValue(JulianFields.MODIFIED_JULIAN_DAY, n, 19, SignStyle.NORMAL)
1487 * E 1 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1488 * EE 2 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1489 * EEE 3 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1490 * EEEE 4 appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL)
1491 * EEEEE 5 appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW)
1492 * e 1 append special localized WeekFields element for numeric day-of-week
1493 * ee 2 append special localized WeekFields element for numeric day-of-week, zero-padded
1494 * eee 3 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1495 * eeee 4 appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL)
1496 * eeeee 5 appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW)
1497 * c 1 append special localized WeekFields element for numeric day-of-week
1498 * ccc 3 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT_STANDALONE)
1499 * cccc 4 appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL_STANDALONE)
1500 * ccccc 5 appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW_STANDALONE)
1501 * </pre>
1502 * <p>
1503 * <b>Time fields</b>: Pattern letters to output a time.
1504 * <pre>
1814 } else {
1815 throw new IllegalArgumentException("Too many pattern letters: " + cur);
1816 }
1817 break;
1818 case 'd':
1819 case 'h':
1820 case 'H':
1821 case 'k':
1822 case 'K':
1823 case 'm':
1824 case 's':
1825 if (count == 1) {
1826 appendValue(field);
1827 } else if (count == 2) {
1828 appendValue(field, count);
1829 } else {
1830 throw new IllegalArgumentException("Too many pattern letters: " + cur);
1831 }
1832 break;
1833 case 'D':
1834 if (count == 1) {
1835 appendValue(field);
1836 } else if (count <= 3) {
1837 appendValue(field, count);
1838 } else {
1839 throw new IllegalArgumentException("Too many pattern letters: " + cur);
1840 }
1841 break;
1842 case 'g':
1843 appendValue(field, count, 19, SignStyle.NORMAL);
1844 break;
1845 default:
1846 if (count == 1) {
1847 appendValue(field);
1848 } else {
1849 appendValue(field, count);
1850 }
1851 break;
1852 }
1853 }
1854
1855 /** Map of letters to fields. */
1856 private static final Map<Character, TemporalField> FIELD_MAP = new HashMap<>();
1857 static {
1858 // SDF = SimpleDateFormat
1859 FIELD_MAP.put('G', ChronoField.ERA); // SDF, LDML (different to both for 1/2 chars)
|
1462 * qqq 3 appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.SHORT_STANDALONE)
1463 * qqqq 4 appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.FULL_STANDALONE)
1464 * qqqqq 5 appendText(IsoFields.QUARTER_OF_YEAR, TextStyle.NARROW_STANDALONE)
1465 *
1466 * M 1 appendValue(ChronoField.MONTH_OF_YEAR)
1467 * MM 2 appendValue(ChronoField.MONTH_OF_YEAR, 2)
1468 * MMM 3 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)
1469 * MMMM 4 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.FULL)
1470 * MMMMM 5 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.NARROW)
1471 * L 1 appendValue(ChronoField.MONTH_OF_YEAR)
1472 * LL 2 appendValue(ChronoField.MONTH_OF_YEAR, 2)
1473 * LLL 3 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT_STANDALONE)
1474 * LLLL 4 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.FULL_STANDALONE)
1475 * LLLLL 5 appendText(ChronoField.MONTH_OF_YEAR, TextStyle.NARROW_STANDALONE)
1476 *
1477 * w 1 append special localized WeekFields element for numeric week-of-year
1478 * ww 2 append special localized WeekFields element for numeric week-of-year, zero-padded
1479 * W 1 append special localized WeekFields element for numeric week-of-month
1480 * d 1 appendValue(ChronoField.DAY_OF_MONTH)
1481 * dd 2 appendValue(ChronoField.DAY_OF_MONTH, 2)
1482 * D..D 1..3 appendValue(ChronoField.DAY_OF_YEAR, n, 19, SignStyle.NORMAL)
1483 * F 1 appendValue(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)
1484 * g..g 1..n appendValue(JulianFields.MODIFIED_JULIAN_DAY, n, 19, SignStyle.NORMAL)
1485 * E 1 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1486 * EE 2 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1487 * EEE 3 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1488 * EEEE 4 appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL)
1489 * EEEEE 5 appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW)
1490 * e 1 append special localized WeekFields element for numeric day-of-week
1491 * ee 2 append special localized WeekFields element for numeric day-of-week, zero-padded
1492 * eee 3 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT)
1493 * eeee 4 appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL)
1494 * eeeee 5 appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW)
1495 * c 1 append special localized WeekFields element for numeric day-of-week
1496 * ccc 3 appendText(ChronoField.DAY_OF_WEEK, TextStyle.SHORT_STANDALONE)
1497 * cccc 4 appendText(ChronoField.DAY_OF_WEEK, TextStyle.FULL_STANDALONE)
1498 * ccccc 5 appendText(ChronoField.DAY_OF_WEEK, TextStyle.NARROW_STANDALONE)
1499 * </pre>
1500 * <p>
1501 * <b>Time fields</b>: Pattern letters to output a time.
1502 * <pre>
1812 } else {
1813 throw new IllegalArgumentException("Too many pattern letters: " + cur);
1814 }
1815 break;
1816 case 'd':
1817 case 'h':
1818 case 'H':
1819 case 'k':
1820 case 'K':
1821 case 'm':
1822 case 's':
1823 if (count == 1) {
1824 appendValue(field);
1825 } else if (count == 2) {
1826 appendValue(field, count);
1827 } else {
1828 throw new IllegalArgumentException("Too many pattern letters: " + cur);
1829 }
1830 break;
1831 case 'D':
1832 if (count > 3) {
1833 throw new IllegalArgumentException("Too many pattern letters: " + cur);
1834 } else {
1835 appendValue(field, count, 19, SignStyle.NORMAL);
1836 }
1837 break;
1838 case 'g':
1839 appendValue(field, count, 19, SignStyle.NORMAL);
1840 break;
1841 default:
1842 if (count == 1) {
1843 appendValue(field);
1844 } else {
1845 appendValue(field, count);
1846 }
1847 break;
1848 }
1849 }
1850
1851 /** Map of letters to fields. */
1852 private static final Map<Character, TemporalField> FIELD_MAP = new HashMap<>();
1853 static {
1854 // SDF = SimpleDateFormat
1855 FIELD_MAP.put('G', ChronoField.ERA); // SDF, LDML (different to both for 1/2 chars)
|