本地化日期 fns

Localize date-fns

我有一个 date-fns 的工作解决方案,使用以下方法:

const formatMonth = format("MMM");

然后我导入了语言环境并尝试了以下操作:

import { de } from 'date-fns/locale';

const formatMonth = format("MMM", {locale: de});

收到错误:RangeError:无效的时间值。如何将语言更改为德语?文档有点建议完全相同,但它不起作用。

编辑: 也许这是相关的并展示了为什么格式不需要新的 Date():

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>
))}

此外,此代码在代码沙箱中有效,但在我的 React 应用程序中无效。仍然抛出错误:RangeError:无效的时间值。

import { format } from 'date-fns';
import { de } from 'date-fns/locale';

const date = new Date();

console.log( format(
  date, 'MMM', 
{ awareOfUnicodeTokens: true, locale: de}
) );

您需要将日期作为第一个参数传递。例如,

const formatMonth = format(new Date(),"MMM", {locale: de}); <br>


const formatMonth = format(new Date(10/28/2021),"MMM", {locale: de});

当您使用 FP 版本格式化日期时,您需要使用 formatWithOptions 函数来传递语言环境选项。

import format from "date-fns/fp/formatWithOptions";

它的函数签名与 format 函数略有不同,您需要将选项作为第一个参数传递。

const formatMonth = format({ locale: de }, "MMM");