Mi backend está construido usando Java y la API de configuración de usuario devuelve formatos de fecha y hora para usar dentro de la vista usando los estándares de Java (las fechas y horas se devuelven más tarde en ISO8601 y se formatean sobre la marcha). El ejemplo en Java 'yyyy-MM-dd' debe convertirse a 'YYYY-MM-DD' para usarse con la biblioteca de javascript momentjs.
¿Existe una forma directa de convertir símbolos de java a bibliotecas de javascript (momentjs o date-fns)?
momentjs tiene sus propios símbolos de formato específicos que eran confusos, mientras que otras bibliotecas como date-fns siguen el estándar LDML. Terminé usando date-fns ya que Java tiene el mismo estándar.
https://date-fns.org/v2.26.0/docs/Unicode-Tokens
https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
Esta será una operación bastante manual. Además, es posible que no pueda cubrir todos los casos, pero sí los más comunes. Lo siguiente debería ayudarlo a comenzar.
function replacer(match, offset, string) { switch (match) { case 'M': return 'M'; case 'MM': return 'MM'; case 'MMM': return 'MMM'; case 'MMMM': return 'MMMM'; case 'd': return 'D'; case 'dd': return 'DD'; case 'D': return 'DDD'; case 'DDD': return 'DDDD'; case 'yy': return 'YY'; case 'yyyy': return 'YYYY'; default: return '(not supported)'; } } var javaPattern = 'yyyy-MM-dd'; var regEx = /([az]+)/g; var javaScriptPattern = javaPattern.replace(regEx, replacer); console.log(javaScriptPattern);Revise las letras de patrón de Java y las letras de patrón de JavaScript en los dos enlaces a continuación y amplíe las traducciones en mi código según sea necesario.
Enlaces
DateTimeFormatter