代码之家  ›  专栏  ›  技术社区  ›  metkopetru

我想给我的node.js项目添加一个实时,我想在if-else的情况下使用它

  •  1
  • metkopetru  · 技术社区  · 2 年前

    我正在为酒店做一个关于日报的项目。例如,我想在网站的日报选项卡中显示所有活动,但也在主页中我想显示关闭的活动,例如,如果卡拉OK是最后2个小时,我想用ejsif在主页中显示它。项目的所有数据都是假的。

    const dailyData = [
        {id:1, name:"Yoga Lesson" ,time: "10:30 AM", place:"Show Lounge", date:"26.07"},
        {id:2, name:"Zumba" ,time: "16:30 PM", place:"Pool Area", date:"28.07"},
        {id:3, name:"Disco" ,time: "12:00 AM ", place:"Eclipse Bar", date:"30.07"},  
    ]
    
    app.use("/daily", function(req,res) {
        res.render("daily", {
            dailyData: dailyData
        })
    });
    

    所以数据已经准备好在“.ejs”文件中使用它了。

    <ul>
        <% dailyData.forEach(data => { %>
            <% if (data.time < ("I need help here")) { %>
             
            <% } %>
        <% }) %>
    </ul>
    

    在这里,我不知道我应该用什么来比较数据。时间。如果数据接近2小时,我想显示数据。

    2 回复  |  直到 2 年前
        1
  •  0
  •   wiggleforlife    2 年前

    不要有两个不同的时间属性,可以考虑使用 Unix time 。您可以修改日常数据对象,使其看起来像这样:

    {id:1, name:"Yoga Lesson", time: 1690392600000, place:"Show Lounge"}
    

    请注意,JS使用毫秒而不是秒,因此您必须将某些转换器给您的时间乘以1000。
    在渲染时,可以使用 DateTimeFormat ,如以下示例:

    date = data.time;
    options = {
      hour: "numeric",
      minute: "numeric",
      timeZone: "Australia/Sydney",
    };
    console.log(new Intl.DateTimeFormat("en-AU", options).format(date));
    

    这使得比较非常容易。

    if (date >= Date.now() && date <= Date.now() + 7200000) {
      console.log("Within two hours from now!");
    } else { console.log("Not within two hours from now."); }