ICU-9105 Fix DateTimePatternGenerator for 'U', integrate Chinese cal data updates from cldrbug 4395, update tests

X-SVN-Rev: 31407
diff --git a/icu4c/source/data/locales/en.txt b/icu4c/source/data/locales/en.txt
index f259374..0a2d2d7 100644
--- a/icu4c/source/data/locales/en.txt
+++ b/icu4c/source/data/locales/en.txt
@@ -43,7 +43,7 @@
             }
         }
     }
-    Version{"2.0.65.46"}
+    Version{"2.0.65.81"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -88,6 +88,45 @@
             }
         }
         chinese{
+            DateTimePatterns{
+                "h:mm:ss a zzzz",
+                "h:mm:ss a z",
+                "h:mm:ss a",
+                "h:mm a",
+                "EEEE, MMMM d, U",
+                "MMMM d, U",
+                "MMM d, U",
+                "M/d/yy",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+                "{1} {0}",
+            }
+            availableFormats{
+                Ed{"d E"}
+                Hm{"HH:mm"}
+                Hms{"HH:mm:ss"}
+                M{"L"}
+                MEd{"E, M/d"}
+                MMM{"LLL"}
+                MMMEd{"E, MMM d"}
+                MMMd{"MMM d"}
+                Md{"M/d"}
+                d{"d"}
+                hm{"h:mm a"}
+                hms{"h:mm:ss a"}
+                ms{"mm:ss"}
+                y{"U"}
+                yM{"M/y"}
+                yMEd{"E, M/d/y"}
+                yMMM{"MMM U"}
+                yMMMEd{"E, MMM d, U"}
+                yMMMd{"MMM d, U"}
+                yMd{"M/d/y"}
+                yQ{"Q U"}
+                yQQQ{"QQQ U"}
+            }
             cyclicNameSets{
                 zodiacs{
                     format{
@@ -108,6 +147,87 @@
                     }
                 }
             }
+            intervalFormats{
+                M{
+                    M{"M–M"}
+                }
+                MEd{
+                    M{"E, M/d – E, M/d"}
+                    d{"E, M/d – E, M/d"}
+                }
+                MMM{
+                    M{"MMM–MMM"}
+                }
+                MMMEd{
+                    M{"E, MMM d – E, MMM d"}
+                    d{"E, MMM d – E, MMM d"}
+                }
+                MMMd{
+                    M{"MMM d – MMM d"}
+                    d{"MMM d–d"}
+                }
+                Md{
+                    M{"M/d – M/d"}
+                    d{"M/d – M/d"}
+                }
+                d{
+                    d{"d–d"}
+                }
+                fallback{"{0} – {1}"}
+                h{
+                    a{"h a – h a"}
+                    h{"h–h a"}
+                }
+                hm{
+                    a{"h:mm a – h:mm a"}
+                    h{"h:mm–h:mm a"}
+                    m{"h:mm–h:mm a"}
+                }
+                hmv{
+                    a{"h:mm a – h:mm a v"}
+                    h{"h:mm–h:mm a v"}
+                    m{"h:mm–h:mm a v"}
+                }
+                hv{
+                    a{"h a – h a v"}
+                    h{"h–h a v"}
+                }
+                y{
+                    y{"U – U"}
+                }
+                yM{
+                    M{"M/yy – M/yy"}
+                    y{"M/yy – M/yy"}
+                }
+                yMEd{
+                    M{"E, M/d/yy – E, M/d/yy"}
+                    d{"E, M/d/yy – E, M/d/yy"}
+                    y{"E, M/d/yy – E, M/d/yy"}
+                }
+                yMMM{
+                    M{"MMM–MMM U"}
+                    y{"MMM U – MMM U"}
+                }
+                yMMMEd{
+                    M{"E, MMM d – E, MMM d, U"}
+                    d{"E, MMM d – E, MMM d, U"}
+                    y{"E, MMM d, U – E, MMM d, U"}
+                }
+                yMMMM{
+                    M{"MMMM–MMMM U"}
+                    y{"MMMM U – MMMM U"}
+                }
+                yMMMd{
+                    M{"MMM d – MMM d, U"}
+                    d{"MMM d–d, U"}
+                    y{"MMM d, U – MMM d, U"}
+                }
+                yMd{
+                    M{"M/d/yy – M/d/yy"}
+                    d{"M/d/yy – M/d/yy"}
+                    y{"M/d/yy – M/d/yy"}
+                }
+            }
         }
         gregorian{
             AmPmMarkers{
diff --git a/icu4c/source/data/locales/fr.txt b/icu4c/source/data/locales/fr.txt
index 46771d9..0dc2bb3 100644
--- a/icu4c/source/data/locales/fr.txt
+++ b/icu4c/source/data/locales/fr.txt
@@ -43,7 +43,7 @@
             }
         }
     }
-    Version{"2.0.65.46"}
+    Version{"2.0.65.81"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -130,14 +130,15 @@
                 MMMd{"d MMM"}
                 Md{"d/M"}
                 ms{"mm:ss"}
-                y{"y"}
+                y{"U"}
                 yM{"M/y"}
                 yMEd{"E d/M/y"}
-                yMMM{"MMM y"}
-                yMMMEd{"E d MMM y"}
-                yMMMd{"d MMM y"}
-                yQ{"'T'Q y"}
-                yQQQ{"QQQ y"}
+                yMMM{"MMM U"}
+                yMMMEd{"E d MMM U"}
+                yMMMd{"d MMM U"}
+                yMd{"d/M/y"}
+                yQ{"'T'Q U"}
+                yQQQ{"QQQ U"}
             }
             monthNames{
                 format{
diff --git a/icu4c/source/data/locales/ja.txt b/icu4c/source/data/locales/ja.txt
index c429c60..ca72482 100644
--- a/icu4c/source/data/locales/ja.txt
+++ b/icu4c/source/data/locales/ja.txt
@@ -92,7 +92,7 @@
         native{"latn"}
         traditional{"jpan"}
     }
-    Version{"2.0.65.46"}
+    Version{"2.0.65.81"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -163,7 +163,7 @@
                     "U年MMMd日",
                     "hanidec",
                 }
-                "U-M-d",
+                "U/M/d",
                 "{1} {0}",
                 "{1} {0}",
                 "{1} {0}",
@@ -173,17 +173,20 @@
             availableFormats{
                 Ed{"d日(E)"}
                 M{"MMM"}
-                MEd{"M-d(E)"}
-                MMMEd{"M月d日(E)"}
-                MMMd{"M月d日"}
+                MEd{"M/d(E)"}
+                MMMEd{"MMMd日(E)"}
+                MMMd{"MMMd日"}
+                Md{"M/d"}
                 d{"d日"}
                 y{"U年"}
                 yM{"U年M月"}
                 yMEd{"U年M月d日(E)"}
-                yMMM{"U年M月"}
-                yMMMEd{"U年M月d日(E)"}
-                yMMMd{"U年M月d日"}
+                yMMM{"U年MMM"}
+                yMMMEd{"U年MMMd日(E)"}
+                yMMMd{"U年MMMd日"}
                 yMd{"U年M月d日"}
+                yQ{"U/Q"}
+                yQQQ{"UQQQ"}
             }
             cyclicNameSets{
                 dayParts{
@@ -289,6 +292,108 @@
                     }
                 }
             }
+            intervalFormats{
+                H{
+                    H{"H時~H時"}
+                    a{"H時~H時"}
+                }
+                Hm{
+                    H{"H時mm分~H時mm分"}
+                    a{"H時mm分~H時mm分"}
+                    m{"H時mm分~H時mm分"}
+                }
+                Hmv{
+                    H{"H時mm分~H時mm分(v)"}
+                    a{"H時mm分~H時mm分(v)"}
+                    m{"H時mm分~H時mm分(v)"}
+                }
+                Hv{
+                    H{"H時~H時(v)"}
+                    a{"H時~H時(v)"}
+                }
+                M{
+                    M{"M月~M月"}
+                }
+                MEd{
+                    M{"MM/dd(E)~MM/dd(E)"}
+                    d{"MM/dd(E)~MM/dd(E)"}
+                }
+                MMM{
+                    M{"MMM~MMM"}
+                }
+                MMMEd{
+                    M{"MMMd日(E)~MMMd日(E)"}
+                    d{"MMMd日(E)~d日(E)"}
+                }
+                MMMM{
+                    M{"MMMM~MMMM"}
+                }
+                MMMd{
+                    M{"MMMd日~MMMd日"}
+                    d{"MMMd日~d日"}
+                }
+                Md{
+                    M{"MM/dd~MM/dd"}
+                    d{"MM/dd~MM/dd"}
+                }
+                d{
+                    d{"d日~d日"}
+                }
+                fallback{"{0}~{1}"}
+                h{
+                    a{"aK時~aK時"}
+                    h{"aK時~K時"}
+                }
+                hm{
+                    a{"aK時mm分~aK時mm分"}
+                    h{"aK時mm分~K時mm分"}
+                    m{"aK時mm分~K時mm分"}
+                }
+                hmv{
+                    a{"aK時mm分~aK時mm分(v)"}
+                    h{"aK時mm分~K時mm分(v)"}
+                    m{"aK時mm分~K時mm分(v)"}
+                }
+                hv{
+                    a{"aK時~aK時(v)"}
+                    h{"aK時~K時(v)"}
+                }
+                y{
+                    y{"U年~U年"}
+                }
+                yM{
+                    M{"U/MM~U/MM"}
+                    y{"U/MM~U/MM"}
+                }
+                yMEd{
+                    M{"U/MM/dd(E)~U/MM/dd(E)"}
+                    d{"U/MM/dd(E)~U/MM/dd(E)"}
+                    y{"U/MM/dd(E)~U/MM/dd(E)"}
+                }
+                yMMM{
+                    M{"U年MMM~MMM"}
+                    y{"U年MMM~U年MMM"}
+                }
+                yMMMEd{
+                    M{"U年MMMd日(E)~MMMd日(E)"}
+                    d{"U年MMMd日(E)~d日(E)"}
+                    y{"U年MMMd日(E)~U年MMMd日(E)"}
+                }
+                yMMMM{
+                    M{"U年MMM~MMM"}
+                    y{"U年MMM~U年MMM"}
+                }
+                yMMMd{
+                    M{"U年MMMd日~MMMd日"}
+                    d{"U年MMMd日~d日"}
+                    y{"U年MMMd日~U年MMMd日"}
+                }
+                yMd{
+                    M{"U/MM/dd~U/MM/dd"}
+                    d{"U/MM/dd~U/MM/dd"}
+                    y{"U/MM/dd~U/MM/dd"}
+                }
+            }
             monthNames{
                 format{
                     wide{
diff --git a/icu4c/source/data/locales/ko.txt b/icu4c/source/data/locales/ko.txt
index 92b48ee..34e2c0a 100644
--- a/icu4c/source/data/locales/ko.txt
+++ b/icu4c/source/data/locales/ko.txt
@@ -61,7 +61,7 @@
             }
         }
     }
-    Version{"2.0.65.46"}
+    Version{"2.0.65.81"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -111,7 +111,7 @@
                 yMd{"G y. M. d."}
                 yQ{"G y년 Q분기"}
                 yQQQ{"G y년 QQQ"}
-                yyMM{"G YY. M."}
+                yyMM{"G yy. M."}
                 yyMMM{"G y년 MMM"}
                 yyQ{"G y년 Q분기"}
                 yyyyMM{"G y. MM"}
@@ -138,6 +138,33 @@
                 "{1} {0}",
                 "{1} {0}",
             }
+            availableFormats{
+                EEEEd{"d일 EEEE"}
+                Ed{"d일 (E)"}
+                H{"H시"}
+                Hms{"H시 m분 s초"}
+                M{"M월"}
+                MEEEEd{"M. d. EEEE"}
+                MEd{"M. d. (E)"}
+                MMM{"LLL"}
+                MMMEd{"MMM d일 (E)"}
+                MMMd{"MMM d일"}
+                Md{"M. d."}
+                d{"d일"}
+                h{"a h시"}
+                hm{"a h:mm"}
+                hms{"a h:mm:ss"}
+                y{"U년"}
+                yM{"U. M."}
+                yMEd{"U. M. d. (E)"}
+                yMMM{"U년 MMM"}
+                yMMMEEEEd{"U년 MMM d일 EEEE"}
+                yMMMEd{"U년 MMM d일 (E)"}
+                yMMMd{"U년 MMM d일"}
+                yMd{"U. M. d."}
+                yQ{"U년 Q분기"}
+                yQQQ{"U년 QQQ"}
+            }
             cyclicNameSets{
                 years{
                     format{
@@ -566,7 +593,7 @@
                 mmss{"mm:ss"}
                 ms{"mm:ss"}
                 y{"G yy년"}
-                yyMM{"G YY. M."}
+                yyMM{"G yy. M."}
                 yyMMM{"G yy년 MMM"}
                 yyQ{"G yy년 Q분기"}
                 yyyy{"G yy년"}
@@ -858,7 +885,7 @@
                 hms{"a h:mm:ss"}
                 mmss{"mm:ss"}
                 ms{"mm:ss"}
-                yyMM{"G YY. M."}
+                yyMM{"G yy. M."}
                 yyMMM{"G yy년 MMM"}
                 yyQ{"G y년 Q분기"}
                 yyyy{"G yy년"}
diff --git a/icu4c/source/data/locales/root.txt b/icu4c/source/data/locales/root.txt
index b04be7b..3811c0b 100644
--- a/icu4c/source/data/locales/root.txt
+++ b/icu4c/source/data/locales/root.txt
@@ -74,7 +74,7 @@
         297,
         210,
     }
-    Version{"2.0.65.49"}
+    Version{"2.0.65.81"}
     calendar{
         buddhist{
             AmPmMarkers:alias{"/LOCALE/calendar/gregorian/AmPmMarkers"}
@@ -162,8 +162,45 @@
                 "{1} {0}",
                 "{1} {0}",
             }
-            appendItems:alias{"/LOCALE/calendar/gregorian/appendItems"}
-            availableFormats:alias{"/LOCALE/calendar/gregorian/availableFormats"}
+            appendItems{
+                Day{"{0} ({2}: {1})"}
+                Day-Of-Week{"{0} {1}"}
+                Era{"{0} {1}"}
+                Hour{"{0} ({2}: {1})"}
+                Minute{"{0} ({2}: {1})"}
+                Month{"{0} ({2}: {1})"}
+                Quarter{"{0} ({2}: {1})"}
+                Second{"{0} ({2}: {1})"}
+                Timezone{"{0} {1}"}
+                Week{"{0} ({2}: {1})"}
+                Year{"{0} {1}"}
+            }
+            availableFormats{
+                Ed{"d E"}
+                H{"HH"}
+                Hm{"HH:mm"}
+                Hms{"HH:mm:ss"}
+                M{"L"}
+                MEd{"E, M-d"}
+                MMM{"LLL"}
+                MMMEd{"E MMM d"}
+                MMMd{"MMM d"}
+                Md{"M-d"}
+                d{"d"}
+                h{"h a"}
+                hm{"h:mm a"}
+                hms{"h:mm:ss a"}
+                ms{"mm:ss"}
+                y{"U"}
+                yM{"y-M"}
+                yMEd{"E, y-M-d"}
+                yMMM{"U MMM"}
+                yMMMEd{"E, U MMM d"}
+                yMMMd{"U MMM d"}
+                yMd{"y-M-d"}
+                yQ{"U Q"}
+                yQQQ{"U QQQ"}
+            }
             cyclicNameSets{
                 dayParts{
                     format{
@@ -258,7 +295,105 @@
                 zodiacs:alias{"/LOCALE/calendar/chinese/cyclicNameSets/dayParts"}
             }
             dayNames:alias{"/LOCALE/calendar/gregorian/dayNames"}
-            intervalFormats:alias{"/LOCALE/calendar/gregorian/intervalFormats"}
+            intervalFormats{
+                H{
+                    H{"HH–HH"}
+                    a{"HH–HH"}
+                }
+                Hm{
+                    H{"HH:mm–HH:mm"}
+                    a{"HH:mm–HH:mm"}
+                    m{"HH:mm–HH:mm"}
+                }
+                Hmv{
+                    H{"HH:mm–HH:mm v"}
+                    a{"HH:mm–HH:mm v"}
+                    m{"HH:mm–HH:mm v"}
+                }
+                Hv{
+                    H{"HH–HH v"}
+                    a{"HH–HH v"}
+                }
+                M{
+                    M{"M–M"}
+                }
+                MEd{
+                    M{"E, MM-dd – E, MM-dd"}
+                    d{"E, MM-dd – E, MM-dd"}
+                }
+                MMM{
+                    M{"LLL–LLL"}
+                }
+                MMMEd{
+                    M{"E, MM-d – E, MM-d"}
+                    d{"E, MM-d – E, MM-d"}
+                }
+                MMMd{
+                    M{"MM-d – MM-d"}
+                    d{"MM-d – d"}
+                }
+                Md{
+                    M{"MM-dd – MM-dd"}
+                    d{"MM-dd – dd"}
+                }
+                d{
+                    d{"d–d"}
+                }
+                fallback{"{0} – {1}"}
+                h{
+                    a{"h a – h a"}
+                    h{"h–h a"}
+                }
+                hm{
+                    a{"h:mm a – h:mm a"}
+                    h{"h:mm–h:mm a"}
+                    m{"h:mm–h:mm a"}
+                }
+                hmv{
+                    a{"h:mm a – h:mm a v"}
+                    h{"h:mm–h:mm a v"}
+                    m{"h:mm–h:mm a v"}
+                }
+                hv{
+                    a{"h a – h a v"}
+                    h{"h–h a v"}
+                }
+                y{
+                    y{"y–y"}
+                }
+                yM{
+                    M{"y-MM – MM"}
+                    y{"y-MM – y-MM"}
+                }
+                yMEd{
+                    M{"E, y-MM-dd – E, y-MM-dd"}
+                    d{"E, y-MM-dd – E, y-MM-dd"}
+                    y{"E, y-MM-dd – E, y-MM-dd"}
+                }
+                yMMM{
+                    M{"U MMM – MMM"}
+                    y{"U MMM – U MMM"}
+                }
+                yMMMEd{
+                    M{"E, U MMM-d – E, U MMM-d"}
+                    d{"E, U MMM-d – E, U MMM-d"}
+                    y{"E, U MMM-d – E, U MMM-d"}
+                }
+                yMMMM{
+                    M{"U MMMM – MMMM"}
+                    y{"U MMMM – U MMMM"}
+                }
+                yMMMd{
+                    M{"U MMM-d – MMM-d"}
+                    d{"U MMM-d – d"}
+                    y{"U MMM-d – U MMM-d"}
+                }
+                yMd{
+                    M{"y-MM-dd – MM-dd"}
+                    d{"y-MM-dd – dd"}
+                    y{"y-MM-dd – y-MM-dd"}
+                }
+            }
             monthNames{
                 default{"format"}
                 format{
diff --git a/icu4c/source/data/locales/zh.txt b/icu4c/source/data/locales/zh.txt
index 70cd94c..e2c2123 100644
--- a/icu4c/source/data/locales/zh.txt
+++ b/icu4c/source/data/locales/zh.txt
@@ -90,7 +90,7 @@
         native{"hanidec"}
         traditional{"hans"}
     }
-    Version{"2.0.65.46"}
+    Version{"2.0.65.81"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -171,18 +171,21 @@
             }
             availableFormats{
                 Ed{"d日E"}
-                M{"M月"}
+                M{"MMM"}
                 MEd{"M-dE"}
-                MMMEd{"M月d日E"}
-                MMMd{"M月d日"}
+                MMMEd{"MMMd日E"}
+                MMMd{"MMMd日"}
+                Md{"M-d"}
                 d{"d日"}
                 y{"U年"}
                 yM{"U年M月"}
                 yMEd{"U年M月d日,E"}
-                yMMM{"U年M月"}
-                yMMMEd{"U年M月d日E"}
-                yMMMd{"U年M月d日"}
+                yMMM{"U年MMM"}
+                yMMMEd{"U年MMMd日E"}
+                yMMMd{"U年MMMd日"}
                 yMd{"U年M月d日"}
+                yQ{"U年QQQ"}
+                yQQQ{"U年QQQ"}
             }
             cyclicNameSets{
                 dayParts{
@@ -288,6 +291,91 @@
                     }
                 }
             }
+            intervalFormats{
+                Hv{
+                    H{"HH–HH v"}
+                    a{"HH–HH v"}
+                }
+                M{
+                    M{"L至L"}
+                }
+                MEd{
+                    M{"M-dE至M-dE"}
+                    d{"M-dE至M-dE"}
+                }
+                MMM{
+                    M{"LLL至LLL"}
+                }
+                MMMEd{
+                    M{"MMMd日E至MMMd日E"}
+                    d{"MMMd日E至d日E"}
+                }
+                MMMd{
+                    M{"MMMd日至MMMd日"}
+                    d{"MMMd日至d日"}
+                }
+                Md{
+                    M{"M-d至M-d"}
+                    d{"M-d至M-d"}
+                }
+                d{
+                    d{"d日至d日"}
+                }
+                fallback{"{0}–{1}"}
+                h{
+                    a{"ah至ah时"}
+                    h{"ah至h时"}
+                }
+                hm{
+                    a{"ah:mm至ah:mm"}
+                    h{"ah:mm至h:mm"}
+                    m{"ah:mm至h:mm"}
+                }
+                hmv{
+                    a{"vah:mm至ah:mm"}
+                    h{"vah:mm至h:mm"}
+                    m{"vah:mm至h:mm"}
+                }
+                hv{
+                    a{"vah至ah时"}
+                    h{"vah至h时"}
+                }
+                y{
+                    y{"U至U"}
+                }
+                yM{
+                    M{"U-M至U-M"}
+                    y{"U-M至U-M"}
+                }
+                yMEd{
+                    M{"U-M-dE至U-M-dE"}
+                    d{"U-M-dE至U-M-dE"}
+                    y{"U-M-dE至U-M-dE"}
+                }
+                yMMM{
+                    M{"U年MMM至MMM"}
+                    y{"U年MMM至U年MMM"}
+                }
+                yMMMEd{
+                    M{"U年MMMd日E至MMMd日E"}
+                    d{"U年MMMd日E至d日E"}
+                    y{"U年MMMd日E至U年MMMd日E"}
+                }
+                yMMMM{
+                    M{"U年MMMM至MMMM"}
+                    y{"U年MMMM至U年MMMM"}
+                }
+                yMMMd{
+                    M{"U年MMMd日至MMMd日"}
+                    d{"U年MMMd日至d日"}
+                    y{"U年MMMd日至U年MMMd日"}
+                }
+                yMd{
+                    M{"U-M-d至U-M-d"}
+                    d{"U-M-d至U-M-d"}
+                    y{"U-M-d至U-M-d"}
+                }
+            }
             monthNames{
                 format{
                     wide{
diff --git a/icu4c/source/data/locales/zh_Hant.txt b/icu4c/source/data/locales/zh_Hant.txt
index bda4811..411626e 100644
--- a/icu4c/source/data/locales/zh_Hant.txt
+++ b/icu4c/source/data/locales/zh_Hant.txt
@@ -88,7 +88,7 @@
         native{"hanidec"}
         traditional{"hant"}
     }
-    Version{"2.0.65.46"}
+    Version{"2.0.65.81"}
     calendar{
         buddhist{
             DateTimePatterns{
@@ -162,7 +162,7 @@
                     "U年MMMd日",
                     "hanidec",
                 }
-                "U-M-d",
+                "U/M/d",
                 "{1} {0}",
                 "{1}{0}",
                 "{1}{0}",
@@ -171,18 +171,21 @@
             }
             availableFormats{
                 Ed{"d日E"}
-                M{"M月"}
-                MEd{"M-dE"}
-                MMMEd{"M月d日E"}
-                MMMd{"M月d日"}
+                M{"MMM"}
+                MEd{"M/dE"}
+                MMMEd{"MMMd日E"}
+                MMMd{"MMMd日"}
+                Md{"M/d"}
                 d{"d日"}
                 y{"U年"}
                 yM{"U年M月"}
                 yMEd{"U年M月d日,E"}
-                yMMM{"U年M月"}
-                yMMMEd{"U年M月d日E"}
-                yMMMd{"U年M月d日"}
+                yMMM{"U年MMM"}
+                yMMMEd{"U年MMMd日E"}
+                yMMMd{"U年MMMd日"}
                 yMd{"U年M月d日"}
+                yQ{"U年QQQ"}
+                yQQQ{"U年QQQ"}
             }
             cyclicNameSets{
                 dayParts{
@@ -288,6 +291,99 @@
                     }
                 }
             }
+            intervalFormats{
+                Hmv{
+                    H{"HH:mm–HH:mm [v]"}
+                    a{"HH:mm–HH:mm [v]"}
+                    m{"HH:mm–HH:mm [v]"}
+                }
+                Hv{
+                    H{"HH–HH [v]"}
+                    a{"HH–HH [v]"}
+                }
+                M{
+                    M{"M月至M月"}
+                }
+                MEd{
+                    M{"M/dE至M/dE"}
+                    d{"M/dE至M/dE"}
+                }
+                MMM{
+                    M{"LLL至LLL"}
+                }
+                MMMEd{
+                    M{"MMMd日E至MMMd日E"}
+                    d{"MMMd日E至d日E"}
+                }
+                MMMM{
+                    M{"LLLL至LLLL"}
+                }
+                MMMd{
+                    M{"MMMd日至MMMd日"}
+                    d{"MMMd日至d日"}
+                }
+                Md{
+                    M{"M/d至M/d"}
+                    d{"M/d至M/d"}
+                }
+                d{
+                    d{"d日至d日"}
+                }
+                fallback{"{0}至{1}"}
+                h{
+                    a{"ah時至ah時"}
+                    h{"ah時至h時"}
+                }
+                hm{
+                    a{"ah:mm至ah:mm"}
+                    h{"ah:mm至h:mm"}
+                    m{"ah:mm至h:mm"}
+                }
+                hmv{
+                    a{"ah:mm至ah:mm [v]"}
+                    h{"ah:mm至h:mm [v]"}
+                    m{"ah:mm至h:mm [v]"}
+                }
+                hv{
+                    a{"ah時至ah時 [v]"}
+                    h{"ah時至h時 [v]"}
+                }
+                y{
+                    y{"U至U"}
+                }
+                yM{
+                    M{"U/M至U/M"}
+                    y{"U/M至U/M"}
+                }
+                yMEd{
+                    M{"U/M/dE至U/M/dE"}
+                    d{"U/M/dE至U/M/dE"}
+                    y{"U/M/dE至U/M/dE"}
+                }
+                yMMM{
+                    M{"U年MMM至MMM"}
+                    y{"U年MMM至U年MMM"}
+                }
+                yMMMEd{
+                    M{"U年MMMd日E至MMMd日E"}
+                    d{"U年MMMd日E至d日E"}
+                    y{"U年MMMd日E至U年MMMd日E"}
+                }
+                yMMMM{
+                    M{"U年MMMM至MMMM"}
+                    y{"U年MMMM至U年MMMM"}
+                }
+                yMMMd{
+                    M{"U年MMMd日至MMMd日"}
+                    d{"U年MMMd日至d日"}
+                    y{"U年MMMd日至U年MMMd日"}
+                }
+                yMd{
+                    M{"U/M/d至U/M/d"}
+                    d{"U/M/d至U/M/d"}
+                    y{"U/M/d至U/M/d"}
+                }
+            }
             monthNames{
                 format{
                     wide{
diff --git a/icu4c/source/i18n/dtptngen.cpp b/icu4c/source/i18n/dtptngen.cpp
index 8717db0..c640d84 100644
--- a/icu4c/source/i18n/dtptngen.cpp
+++ b/icu4c/source/i18n/dtptngen.cpp
@@ -1030,8 +1030,8 @@
                     //
                     // The adjusted field should consist of characters from the originally requested
                     // skeleton, except in the case of UDATPG_HOUR_FIELD or UDATPG_MONTH_FIELD or
-                    // UDATPG_WEEKDAY_FIELD, in which case it should consist of characters from the
-                    // found pattern.
+                    // UDATPG_WEEKDAY_FIELD or UDATPG_YEAR_FIELD, in which case it should consist
+                    // of characters from the  found pattern.
                     //
                     // The length of the adjusted field (adjFieldLen) should match that in the originally
                     // requested skeleton, except that in the following cases the length of the adjusted field
@@ -1064,7 +1064,8 @@
                             adjFieldLen = field.length();
                         }
                     }
-                    UChar c = (typeValue!= UDATPG_HOUR_FIELD && typeValue!= UDATPG_MONTH_FIELD && typeValue!= UDATPG_WEEKDAY_FIELD)?
+                    UChar c = (typeValue!= UDATPG_HOUR_FIELD && typeValue!= UDATPG_MONTH_FIELD &&
+                               typeValue!= UDATPG_WEEKDAY_FIELD && typeValue!= UDATPG_YEAR_FIELD)?
                         reqField.charAt(0): field.charAt(0);
                     field.remove();
                     for (int32_t i=adjFieldLen; i>0; --i) {
diff --git a/icu4c/source/test/intltest/dtfmttst.cpp b/icu4c/source/test/intltest/dtfmttst.cpp
index f8b1817..23e3de0 100644
--- a/icu4c/source/test/intltest/dtfmttst.cpp
+++ b/icu4c/source/test/intltest/dtfmttst.cpp
@@ -3737,8 +3737,8 @@
         { "root@calendar=chinese",    -3,                 { UnicodeString("ren-chen-4-2"),  UnicodeString("ren-chen-4bis-2"),       UnicodeString("ren-chen-5-2") } },
         { "root@calendar=chinese",    -4,                 { UnicodeString("ren-chen 4 2"),  UnicodeString("ren-chen 4bis 2"),       UnicodeString("ren-chen 5 2") } },
         { "en@calendar=gregorian",    -3,                 { UnicodeString("2012-4-22"),     UnicodeString("2012-5-22"),             UnicodeString("2012-6-20") } },
-        { "en@calendar=chinese",      DateFormat::kLong,  { UnicodeString("ren-chen 4 2"),  UnicodeString("ren-chen 4bis 2"),       UnicodeString("ren-chen 5 2") } },
-        { "en@calendar=chinese",      DateFormat::kShort, { UnicodeString("29-4-2"),        UnicodeString("29-4bis-2"),             UnicodeString("29-5-2") } },
+        { "en@calendar=chinese",      DateFormat::kLong,  { UnicodeString("4 2, ren-chen"), UnicodeString("4bis 2, ren-chen"),      UnicodeString("5 2, ren-chen") } },
+        { "en@calendar=chinese",      DateFormat::kShort, { UnicodeString("4/2/29"),        UnicodeString("4bis/2/29"),             UnicodeString("5/2/29") } },
         { "zh@calendar=chinese",      DateFormat::kLong,  { CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u56DB\\u6708\\u4E8C\\u65E5"),
                                                             CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u95F0\\u56DB\\u6708\\u4E8C\\u65E5"),
                                                             CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u4E94\\u6708\\u4E8C\\u65E5") } },
@@ -3754,9 +3754,9 @@
         { "zh_Hant@calendar=chinese", DateFormat::kLong,  { CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u56DB\\u6708\\u4E8C\\u65E5"),
                                                             CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u958F\\u56DB\\u6708\\u4E8C\\u65E5"),
                                                             CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u4E94\\u6708\\u4E8C\\u65E5") } },
-        { "zh_Hant@calendar=chinese", DateFormat::kShort, { CharsToUnicodeString("\\u58EC\\u8FB0-4-2"),
-        													CharsToUnicodeString("\\u58EC\\u8FB0-\\u958F4-2"),
-        													CharsToUnicodeString("\\u58EC\\u8FB0-5-2") } },
+        { "zh_Hant@calendar=chinese", DateFormat::kShort, { CharsToUnicodeString("\\u58EC\\u8FB0/4/2"),
+        													CharsToUnicodeString("\\u58EC\\u8FB0/\\u958F4/2"),
+        													CharsToUnicodeString("\\u58EC\\u8FB0/5/2") } },
         { "fr@calendar=chinese",      DateFormat::kLong,  { CharsToUnicodeString("2 s\\u00ECyu\\u00E8 ren-chen"),
                                                             CharsToUnicodeString("2 s\\u00ECyu\\u00E8bis ren-chen"),
                                                             CharsToUnicodeString("2 w\\u01D4yu\\u00E8 ren-chen") } },
diff --git a/icu4c/source/test/intltest/dtptngts.cpp b/icu4c/source/test/intltest/dtptngts.cpp
index ab804ff..4b3a07b 100644
--- a/icu4c/source/test/intltest/dtptngts.cpp
+++ b/icu4c/source/test/intltest/dtptngts.cpp
@@ -33,7 +33,7 @@
     }
 }
 
-#define MAX_LOCALE   10  
+#define MAX_LOCALE   11  
 
 /**
  * Test various generic API methods of DateTimePatternGenerator for API coverage.
@@ -71,6 +71,7 @@
         {"zh", "Hans", "CN", ""},               // 7
         {"zh", "TW", "", "calendar=roc"},       // 8
         {"ru", "", "", ""},                     // 9
+        {"zh", "", "", "calendar=chinese"},    // 10
      };
     
     // For Weds, Jan 13, 1999, 23:58:59
@@ -255,6 +256,24 @@
         CharsToUnicodeString("\\u0421\\u0440, 13"),                       // 14: Ed    -> EEE, d
         UnicodeString("23:58:59,123"),                                    // 15: jmmssSSS -> "H:mm:ss,SSS"
 
+        // zh@calendar=chinese                                            // 10 zh@calendar=chinese
+        CharsToUnicodeString("\\u620A\\u5BC5\\u5E7411\\u6708"),           // 00: yM
+        CharsToUnicodeString("\\u620A\\u5BC5\\u5E74\\u5341\\u4E00\\u6708"),  // 01: yMMM
+        CharsToUnicodeString("\\u620A\\u5BC5\\u5E7411\\u670826\\u65E5"),  // 02: yMd
+        CharsToUnicodeString("\\u620A\\u5BC5\\u5E74\\u5341\\u4E00\\u670826\\u65E5"),  // 03: yMMMd
+        UnicodeString("11-26"),                                           // 04: Md
+        CharsToUnicodeString("\\u5341\\u4E00\\u670826\\u65E5"),           // 05: MMMd
+        CharsToUnicodeString("\\u5341\\u4E00\\u670826\\u65E5"),           // 06: MMMMd
+        CharsToUnicodeString("\\u620A\\u5BC5\\u5E744\\u5B63"),            // 07: yQQQ
+        CharsToUnicodeString("\\u4E0B\\u534811:58"),                      // 08: hhmm
+        UnicodeString("23:58"),                                           // 09: HHmm
+        CharsToUnicodeString("\\u4E0B\\u534811:58"),                      // 10: jjmm
+        UnicodeString("58:59"),                                           // 11: mmss
+        CharsToUnicodeString("\\u620A\\u5BC5\\u5E74\\u5341\\u4E00\\u6708"), // 12: yyyyMMMM
+        CharsToUnicodeString("\\u5341\\u4E00\\u670826\\u65E5\\u5468\\u4E09"), // 13: MMMEd
+        CharsToUnicodeString("26\\u65E5\\u5468\\u4E09"),                  // 14: Ed    -> d\u65E5EEE
+        CharsToUnicodeString("\\u4E0B\\u534811:58:59.123"),               // 15: jmmssSS
+
         UnicodeString(),
     };