【问题标题】:Using moment.js to determine if current time (in hour) is between certain hours使用 moment.js 确定当前时间(以小时为单位)是否在特定时间之间
【发布时间】:2020-05-29 06:14:22
【问题描述】:

我正在开发一种功能,该功能会通过时间感知问候(早安,下午,晚上,晚上)向用户打招呼。这是我制作的脚本

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(),但是当我这样做时,网站就会消失。 希望这里的任何人对我应该如何解决这个问题有任何见解。

【问题讨论】:

    标签: javascript time momentjs


    【解决方案1】:

    您以错误的方式使用moment().isBetween()。您可以从here 看到正确的方法用法。根据您的要求,无需使用此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"
      }
    
    }
    

    【讨论】:

    • 这行得通!非常感谢队友!我之所以这样使用它,是因为那里的示例直接使用了日期,所以我认为它也适用于小时数。
    • @DavidBudiarto 很高兴听到这个消息。 :)
    • 为了晚安你需要把&amp;&amp;改成||,我猜...
    【解决方案2】:

    接受的答案可以简化很多; elses 完全是多余的,因为提前返回:

    function greeting() {
            const hour = moment().hour();
    
            if (hour > 16){
                return "Good evening";
            }
    
             if (hour > 11){
                 return "Good afternoon";
             }
    
             return 'Good morning';
        }
    

    【讨论】:

      【解决方案3】:

      @Thusitha

      或者你可以使用

      moment().hour()
      

      而不是

      moment().format('HH')(
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-20
        • 2016-07-11
        • 1970-01-01
        相关资源
        最近更新 更多