Tengo un caso de uso en el que obtengo fechas con diferentes lugares y estoy tratando de analizarlas en RFC2822.
El problema es que con algunos momentos locales simplemente no analiza la fecha correctamente. Por ejemplo, "24 de enero de 2022" no funciona.
La configuración regional para la fecha es "fr"-francés y debe coincidir con el formato "ll". Sin embargo, parece que no puedo hacer que el momento analice esa cadena correctamente.
Codepen: https://codesandbox.io/s/sad-swirles-21cf9?file=/src/App.js:53-130 (consulte la consola)
Código:
const testString = "24 janv. 2022"; const DATE_RFC2822 = "HH:mm MMM DD YYYY"; const parseDate = (date) => { const locales = [ "en", "de", "fr", "es", "pl", "nl", "it", "ar", "cs", "sk", "sv", "zh-cn", "tr", "el", "fi", "he", "hi", "hu", "ko", "he" ]; for (let i = 0; i < locales.length; i++) { let parsedDate = moment( date, ["D. MMM YYYY", "MMM D, YYYY", "D MMM. YYYY", "D MMMM. YYYY", "ll"], locales[i], true ); if (parsedDate.isValid()) { parsedDate.locale("en"); return { success: true, object: parsedDate, formatted: parsedDate.format(DATE_RFC2822), source: date }; } } return { success: false, object: "", formatted: "", source: date } };El problema es que no está importando correctamente la localización, eche un vistazo a la sección Loading locales in NodeJS en los documentos.
El código vinculado funciona si pones:
import moment from "moment/min/moment-with-locales";en vez de
import moment from "moment";