【问题标题】:How to check if current date is between two dates in javascript如何检查当前日期是否在javascript中的两个日期之间
【发布时间】:2022-02-10 19:41:41
【问题描述】:

我正在尝试在我的项目中制作直播功能,我有一系列程序(视频),每个视频都有 startDate 和 endDate。我应该在时机成熟时播放每个视频。

const programs = [
    { video: "URL", startDate: 1644405993, endDate: 1644406032 },
    { video: "URL", startDate: 1644405993, endDate: 1644406032 },
    { video: "URL", startDate: 1644405993, endDate: 1644406032 },
    { video: "URL", startDate: 1644405993, endDate: 1644406032 }
];

【问题讨论】:

  • 这些值似乎是以秒为单位的 ECMAScript 纪元的偏移量 (1644405993 => 2022-02-09T11:26:33.000Z)。 Date.now 返回当前时间的偏移量(以毫秒为单位)。所以你可以只做let now = Date.now() / 1000; if (now >= startDate && now <= endDate) 然后它在或等于 startDateendDate 之间。

标签: javascript reactjs date


【解决方案1】:

您可以获得一个新日期并将其与您存储的日期进行比较(尽管您似乎没有将日期存储为正确的日期时间戳)。您所追求的项目是 startDate 小于 current 且 end endDate 大于 current 的项目。如果没有找到匹配项,这也会给出一个空数组 - 因此您需要检查返回的匹配项长度。

const programs = [
    { video: "URL1", startDate: 1644492517146, endDate: 1644492517446 },
    { video: "URL2", startDate: 1644492517726, endDate: 1644492517646 },
    { video: "URL3", startDate: 1644492507746, endDate: 1644492517546 },
    { video: "URL4", startDate: 1644492517746, endDate: 16474492519746 }
];

const now =new Date().getTime(); // gives similar to 1644492517146

const currentProgram = programs.filter(
  p => new Date(p.startDate) < now && new Date(p.endDate) > now
);

console.log(currentProgram) // gives [{ video: "URL4", startDate: 1644492517746, endDate: 16474492519746 }]

【讨论】:

    【解决方案2】:

    你可以通过调用这个函数来检查。

    function compareDates(startDate,endDate){
      let current=new Date();
      return startDate>=current && endDate<=current;
    }
    

    【讨论】:

      【解决方案3】:

      试试这个

      export const checkTime = (startDate, endDate) => {// startDate= 1644405993, endDate = 1644406032
      const now = new Date()
      const bookingStartDate = new Date(startDate) // use this step to convert your date if its stored in a different format
      const bookingEndDate = new Date(endDate) // use this step to convert your date if its stored in a different format
      return now.getTime() > bookingStartDate.getTime() && now.getTime() < bookingEndDate.getTime()
      

      }

      【讨论】:

        猜你喜欢
        • 2014-06-17
        • 2012-11-13
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        • 2017-07-07
        • 1970-01-01
        相关资源
        最近更新 更多