Me pregunto si alguien sabe por qué cuando se usa Intl.DateTimeFormat para crear un formateador que usa 'en-GB' como configuración regional dará un resultado diferente al uso de 'en-Latn-GB' pero usando 'zh-HK' y 'zh-Hant- HK' dará el mismo resultado.
Vea el ejemplo a continuación y JSFiddle
const date = new Date(Date.parse('2020-12-20T03:23:16')); // Specify default date formatting for language (locale) console.log(new Intl.DateTimeFormat('en-GB').format(date)); // expected output: "20/12/2020" console.log(new Intl.DateTimeFormat('en-Latn-GB').format(date)); // expected output: "20/12/2020" console.log(new Intl.DateTimeFormat('zh-HK').format(date)); // expected output: "20/12/2020" console.log(new Intl.DateTimeFormat('zh-Hant-HK').format(date)); // expected output: "20/12/2020"https://jsfiddle.net/aqn0e4tp/
El trasfondo de por qué terminamos con 'en-Latn-GB' es por varias razones que originalmente creamos un Intl.Locale para 'en-GB' y luego llamamos a Locale.maximize() para establecer el valor predeterminado en algunas propiedades y luego de hacerlo usando Locale.baseName como la configuración regional al crear un formateador. En esta situación, Locale.baseName incluye el script 'Latn'.
Podemos solucionar ese problema, pero tengo curiosidad por saber por qué debería haber una diferencia.