javascript 使用moment.js确定当前时间(以小时为单位)是否在特定小时之间

hpcdzsge  于 2023-02-28  发布在  Java
关注(0)|答案(4)|浏览(363)

我正在开发一个函数,它可以用时间感知的问候语(早上好、下午好、晚上好、晚上好)来问候用户。

import moment from "moment";

function generateGreetings(){
    if (moment().isBetween(3, 12, 'HH')){
        return "Good Morning";
    } else if (moment().isBetween(12, 15, 'HH')){
        return "Good Afternoon";
    }   else if (moment().isBetween(15, 20, 'HH')){
        return "Good Evening";
    } else if (moment().isBetween(20, 3, 'HH')){
        return "Good Night";
    } else {
        return "Hello"
    }
}

$("greet")
.css({
    display: "block",
    fontSize: "4vw",
    textAlign: "center",
    })
.text(generateGreetings() +", name")

但是它根本不起作用,只是返回“Hello”。

var currentTime = moment();
var currentHour = currentTime.hour();

并使用currentHour来替换函数内部的moment(),但当我这样做时,网站就消失了。希望这里的任何人对我应该做些什么来解决这个问题有任何见解。

h43kikqp

h43kikqp1#

您使用moment().isBetween()的方式不对。您可以从这里看到正确的方法用法。对于您的要求,不需要使用isBetween方法。您可以简单地获得小时,然后根据if条件检查它。
您可以重新安排您的方法如下。

function generateGreetings(){

  var currentHour = moment().format("HH");

  if (currentHour >= 3 && currentHour < 12){
      return "Good Morning";
  } else if (currentHour >= 12 && currentHour < 15){
      return "Good Afternoon";
  }   else if (currentHour >= 15 && currentHour < 20){
      return "Good Evening";
  } else if (currentHour >= 20 || currentHour < 3){
      return "Good Night";
  } else {
      return "Hello"
  }

}
bsxbgnwa

bsxbgnwa2#

公认的答案可以简化很多;由于早期的回报,elses完全是多余的:

function greeting() {
        const hour = moment().hour();

        if (hour > 16){
            return "Good evening";
        }

         if (hour > 11){
             return "Good afternoon";
         }

         return 'Good morning';
    }
h43kikqp

h43kikqp3#

@图西塔
或者你可以用

moment().hour()

代替

moment().format('HH')(
uyto3xhc

uyto3xhc4#

以下是一种分割白天时间的方法(早晨时间和晚上时间)

将YYYY-MM-DD替换为要使用的实际日期:

const date = moment("YYYY-MM-DD");
const morningEnd = moment(date).hour(12).minute(0).second(0);
const eveningStart = moment(date).hour(18).minute(0).second(0);

const morningTimes = [];
for (let m = moment(date); m.isBefore(morningEnd); m.add(30, 'minutes')) {
  morningTimes.push(m.format('HH:mm'));
}

const eveningTimes = [];
for (let m = eveningStart; m.isBefore(moment(date).endOf('day')); m.add(30, 'minutes')) {
  eveningTimes.push(m.format('HH:mm'));
}

console.log('Morning times:', morningTimes);
console.log('Evening times:', eveningTimes);

相关问题