如何根据一天中的时间显示消息?
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> © 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()
我正在尝试创建一个网站,其中包含欢迎信息,但会根据一天中的不同时间发生变化。例如:早上好 (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> © 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()