0

我想在 js 模块中的 lit 元素内的 json 数据库中显示每个条目(日期、文本、问题、答案)的日期。json db 中 (date) 的日期格式是有效的(参见这篇文章)。例子:"2021-12-24T21:06:06.773Z"

相关代码:

import { formatWithOptions } from "date-fns/fp";
import compose from "crocks/helpers/compose";

...

const newDate = (x) => new Date(x);


const formatDateWithOptions = formatWithOptions(
  {
    awareOfUnicodeTokens: true,
  },
  "d MMMM, yyyy, h:mm a"
);

const prettyDate = compose(formatDateWithOptions, newDate); // this is registering as an invalid date

${prettyDate(date)}在 lit 元素中调用时,它会抛出

RangeError: Invalid time value.

根据date-fns docsformatWithOptions()应该可以用"d MMMM, yyyy, h:mm a". 这篇文章处理了相同的错误,但使用了不同的函数 ( formatDistanceToNow)。我的变量哪里出错了?

4

1 回答 1

0

x如果未定义,下面的代码将生成无效日期。

const newDate = (x) => new Date(x);

另外,不要忘记您需要执行 compose 函数来为函数提供输入newDate

下面的代码应该可以工作:

const MY_DATE_STR = "2021-12-24T21:06:06.773Z";

const newDate = x => {
  if (x === undefined) { return new Date(); }
  return new Date(x);
}

const formatDateWithOptions = formatWithOptions(
  {
    awareOfUnicodeTokens: true,
  },
  "d MMMM, yyyy, h:mm a"
  );

const prettyDate = compose(formatDateWithOptions, newDate)(MY_DATE_STR);

console.log(prettyDate); // 24 December, 2021, 1:06 PM
于 2021-12-27T21:21:04.183 回答