【问题标题】:How to display message dependent on time of day?如何根据一天中的时间显示消息?
【发布时间】:2018-08-31 11:44:59
【问题描述】:

我正在尝试创建一个网站,其中包含欢迎信息,但会根据一天中的时间而变化。例如:早上好(2am - 11:59am),下午好(12:00pm - 4:59pm)晚上好(5:00pm - 1:59am)。如何在 Node.JS 中使用 Handlebars 执行此操作。

const express = require('express');
const path = require('path');
const hbs = require('express-handlebars');
// const request = require('request');

// Init App
const app = express();

// Json File
const json = require("./data.json");

// Moment.js
var moment = require('moment');

// Load View Engine
app.engine('hbs', hbs({extname: 'hbs', defaultLayout: 'layout', 
layoutsDir: __dirname + '/views/layouts/'}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(express.static(__dirname+'/public'));

// Home Route
app.get('/', function(req, res){
  res.render('index', {
    title: 'Node Park',
    hotel: 'Nodemon',
    firstName: json.payload.data.Source_FirstName,
    lastname: json.payload.data.Source_LastName,
    date: moment().format('ll'),
    time: moment().format('LT'),
  });
});

// Start Server
app.listen(5000, function(){
  console.log('Port 5000 open for business.');
});

查看:

<div id="body-container">
<div id="header">
    <div id="logo-content">
        <div id="logo"></div>
    </div>
    <div id="welcome">
        <p>Welcome {{ firstName }} {{ lastname }} to NODE Park.</p>
    </div>
    <div id="time-side">
        <div id="time-content">
            <p> {{ date }} <br> {{ time }} </p>
        </div>
    </div>
</div> 
{{!-- end of header --}}

<div id="background">
    <img src="images/villaView.jpg" alt="villaView">
</div>

<div id="footer">
    <p> <br> &copy; 2018 FreshOceans </p>
</div>

【问题讨论】:

    标签: node.js express handlebars.js express-handlebars


    【解决方案1】:

    您需要编写根据时间返回正确消息的函数。这很简单。

    function generateModt()
    {
        var ret = " ";
        var morning = moment('08:00am', 'hh:mma');
        var noon = moment('11:59am', 'hh:mma');
        var currentTime = moment();
    
        if(currentTime.isBefore(noon) && currentTime.isAfter(morning))
        {
          ret = "Hello, it's morning";
        }
        else... //You need to write rest of your cases
    
        return ret;
    }
    
    // Home Route
    app.get('/', function(req, res){
      res.render('index', {
        title: 'Node Park',
        hotel: 'Nodemon',
        firstName: json.payload.data.Source_FirstName,
        lastname: json.payload.data.Source_LastName,
        date: moment().format('ll'),
        time: moment().format('LT'),
        modt: generateModt()
      });
    });
    

    然后只需将 {{ modt }} 添加到您的网页。

    无论如何,也许您需要获取 currentTime 有点不同的方式,只获取时间,而不是日期。

    您在这里遇到的类似问题: How to use Moment.JS to check whether the current time is between 2 times

    编辑: 您可以检查这是否适用于仅获取时间,没有日期:

    moment().toDate().getTime()
    

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多