Tenía una solución funcional para date-fns usando lo siguiente:
const formatMonth = format("MMM");Luego importé la configuración regional e intenté lo siguiente:
import { de } from 'date-fns/locale'; const formatMonth = format("MMM", {locale: de});Obteniendo el error: RangeError: valor de tiempo no válido. ¿Cómo cambio el idioma a alemán? Los documentos sugieren exactamente lo mismo, pero no funciona.
EDITAR: Tal vez eso sea relevante y muestre por qué la nueva Fecha () no es necesaria para el formato:
const months = eachMonthOfInterval({ start: startOfYear(value), end: endOfYear(value) }); {months.map((month) => ( <ListboxOption key={month.toDateString()} value={month} date={formatMonth(month)} disabled={!isOlderThen18Years(month)} ></ListboxOption> ))}Además, este código funciona en el espacio aislado de código, pero no en mi aplicación de reacción. Todavía arroja un error: RangeError: valor de tiempo no válido.
import { format } from 'date-fns'; import { de } from 'date-fns/locale'; const date = new Date(); console.log( format( date, 'MMM', { awareOfUnicodeTokens: true, locale: de} ) );Como está utilizando la versión FP para formatear una fecha, debe usar la función formatWithOptions para pasar las opciones de configuración regional.
import format from "date-fns/fp/formatWithOptions"; Tiene una firma de función ligeramente diferente a la función de format , donde debe pasar las opciones como primer argumento.
const formatMonth = format({ locale: de }, "MMM");Debe pasar la fecha como el primer parámetro. Para un ejemplo,
const formatMonth = format(new Date(),"MMM", {locale: de}); <br> O
const formatMonth = format(new Date(10/28/2021),"MMM", {locale: de});