如何根据一天中的时间显示消息?

How to display message dependent on time of day?

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

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>

您需要编写 returns 根据时间更正消息的函数。很简单。

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,以便只获取时间,而不是日期。

你在这里有类似的问题:

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

moment().toDate().getTime()