首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >formatWithOptions中正确的数据格式会导致范围错误:无效的时间值

formatWithOptions中正确的数据格式会导致范围错误:无效的时间值
EN

Stack Overflow用户
提问于 2021-12-27 20:45:01
回答 1查看 128关注 0票数 0

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

相关守则:

代码语言:javascript
复制
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)}在发光元素中被调用时,它会抛出

代码语言:javascript
复制
RangeError: Invalid time value.

根据日期-fns文档的说法,formatWithOptions()应该可以和"d MMMM, yyyy, h:mm a"联系。这个职位处理相同的错误,但使用的是不同的函数(formatDistanceToNow)。我的变量哪里出了问题?

EN

回答 1

Stack Overflow用户

发布于 2021-12-27 21:21:04

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

代码语言:javascript
复制
const newDate = (x) => new Date(x);

另外,不要忘记,您需要执行复合函数来向newDate函数提供输入。

下列守则应能发挥作用:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70500261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档