diff --git a/pom.xml b/pom.xml
index 244d49b53..99e8910db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,6 +120,11 @@
junit-jupiter
test
+
+ org.junit-pioneer
+ junit-pioneer
+ test
+
diff --git a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
index c08de17e5..dd426d057 100644
--- a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
@@ -293,7 +293,7 @@ protected DateFormat getFormat(final Locale locale, final TimeZone timeZone) {
* @return The DateFormat
*/
private DateFormat getFormat(final String pattern) {
- final DateFormat format = new SimpleDateFormat(pattern);
+ final DateFormat format = locale == null ? new SimpleDateFormat(pattern) : new SimpleDateFormat(pattern, locale);
if (timeZone != null) {
format.setTimeZone(timeZone);
}
diff --git a/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java b/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java
index 0e55f7b1e..48bc622a6 100644
--- a/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java
+++ b/src/test/java/org/apache/commons/beanutils2/converters/AbstractDateConverterTest.java
@@ -42,6 +42,7 @@
import org.apache.commons.beanutils2.ConversionException;
import org.apache.commons.beanutils2.Converter;
import org.junit.jupiter.api.Test;
+import org.junitpioneer.jupiter.DefaultLocale;
/**
* Abstract base for <Date>Converter classes.
@@ -268,6 +269,22 @@ public void testLocale() {
Locale.setDefault(defaultLocale);
}
+ /**
+ * Test that a configured Locale is honored when a pattern is also set.
+ */
+ @Test
+ @DefaultLocale(language = "en", country = "US")
+ void testLocaleWithPattern() {
+ // The default Locale's month names differ from the configured Locale's.
+ final String pattern = "dd MMMM yyyy"; // month name is Locale-sensitive
+ final DateTimeConverter converter = makeConverter();
+ converter.setLocale(Locale.GERMANY);
+ converter.setPattern(pattern);
+ final String testString = "28 Oktober 2006";
+ final Object expected = toType(testString, pattern, Locale.GERMANY);
+ validConversion(converter, expected, testString);
+ }
+
/**
* Test Converter with multiple patterns
*/