微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 date-fns

如何解决如何使用 date-fns

我尝试使用 date-fns 中的 intervalToDuration 函数,但我一直收到一个错误,指出结束日期无效。

我的代码如下

import { intervalToDuration} from "date-fns";

    remaining() {
          const Now = new Date();
          const end = this.endDate;
          return intervalToDuration({
            start: Now,end: end,});
        },

this.endDate 是动态填充的,但对于这个问题,它等于 2021-02-26T00:00:00.000Z

解决方法

由于您的 endDate 变量来自 API,因此它被存储为字符串,而不是日期。

调用 intervalToDuration 期望将 interval object 作为参数传递。一个间隔由两个日期或数字组成(unix 时间戳)

要更正此问题,您必须将 endDate 转换为日期对象,以下是未经测试的示例;

const remaining = () => {
  const endDate = "2021-02-26T00:00:00.000Z";
  const now = new Date();
  const end = new Date(endDate);
  return intervalToDuration({
    start: now,end: end
  });
};

const dur = remaining();
console.log("DURRATON ",JSON.stringify(dur));
//
// Response == DURRATON  {"years":0,"months":1,"days":8,"hours":15,"minutes":42,"seconds":0}
//

注意:这不能正确处理时区。 new Date() 将在客户端时区中创建一个日期时间,您的 API 响应似乎在 GMT 时区

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。