diff --git a/common/main/an.xml b/common/main/an.xml
index 6aed6517ff5..f36393ecbc6 100644
--- a/common/main/an.xml
+++ b/common/main/an.xml
@@ -1125,8 +1125,8 @@ CLDR data files are interpreted according to the LDML specification (http://unic
E, d/M/y – E, d/M/y
- E, d/M/y
- E, d/M/Y – E, d/M/Y
+ E, d/M/y – E, d/M/y
+ E, d/M/y – E, d/M/y
LLL–LLL y
diff --git a/common/main/rif.xml b/common/main/rif.xml
index 6dc31325f18..7949f8737f4 100644
--- a/common/main/rif.xml
+++ b/common/main/rif.xml
@@ -1119,7 +1119,7 @@ CLDR data files are interpreted according to the LDML specification (http://unic
E dd/MM – E dd/MM
- E dd/MM
+ E dd/MM – E dd/MM
MMM – MMM
diff --git a/common/main/si.xml b/common/main/si.xml
index 32d6943f55d..111d8cb9b98 100644
--- a/common/main/si.xml
+++ b/common/main/si.xml
@@ -1183,7 +1183,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
HH.mm–HH.mm
- a h.mm – a hhh.mm v
+ a h.mm – a h.mm v
a h.mm – h.mm v
a h.mm – h.mm v
@@ -1193,7 +1193,7 @@ Warnings: All cp values have U+FE0F characters removed. See /annotationsDerived/
a h – a h v
- a h – h vv
+ a h – h v
↑↑↑
diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/test/CheckDates.java b/tools/cldr-code/src/main/java/org/unicode/cldr/test/CheckDates.java
index 82f1cec20c1..c40b4e5993f 100644
--- a/tools/cldr-code/src/main/java/org/unicode/cldr/test/CheckDates.java
+++ b/tools/cldr-code/src/main/java/org/unicode/cldr/test/CheckDates.java
@@ -3,6 +3,8 @@
import com.google.common.base.Joiner;
import com.ibm.icu.impl.Relation;
import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.DateIntervalInfo;
+import com.ibm.icu.text.DateIntervalInfo.PatternInfo;
import com.ibm.icu.text.DateTimePatternGenerator;
import com.ibm.icu.text.DateTimePatternGenerator.VariableField;
import com.ibm.icu.text.MessageFormat;
@@ -1192,6 +1194,33 @@ private void checkPattern(
new Object[] {requiredYearFieldCount, yearFieldCount}));
}
}
+ // check PatternInfo, for CLDR-17827
+ // ICU-22835, DateIntervalInfo.genPatternInfo fails for intervals like LLL - MMM (in fa)
+ if (!(value.contains("LLL") && value.contains("MMM"))) {
+ PatternInfo pattern = DateIntervalInfo.genPatternInfo(value, false);
+ try {
+ String first = pattern.getFirstPart();
+ String second = pattern.getSecondPart();
+ if (first == null || second == null) {
+ result.add(
+ new CheckStatus()
+ .setCause(this)
+ .setMainType(CheckStatus.errorType)
+ .setSubtype(Subtype.incorrectDatePattern)
+ .setMessage(
+ "DateIntervalInfo.PatternInfo returns null for first or second part"));
+ }
+ } catch (Exception e) {
+ result.add(
+ new CheckStatus()
+ .setCause(this)
+ .setMainType(CheckStatus.errorType)
+ .setSubtype(Subtype.incorrectDatePattern)
+ .setMessage(
+ "DateIntervalInfo.PatternInfo exception {0}",
+ new Object[] {e}));
+ }
+ }
}
if (value.contains("G") && calendar.equals("gregorian")) {