MomentJS在满足某些条件时更改文本

时间:2020-05-22 07:52:25

标签: javascript jquery momentjs

当前,我正在使用momentJS,并且我想在某个条件为真时更改元素的文本。

要在MomentJS中度过一天,您只需moment().day(),就可以持续数小时和数分钟。日期从1(星期一)到7(星期日)。

我有一个所谓的“截止”时间来订购商品。例如“晚上8点之前订购,第二天发货”,那么在这种情况下,截止时间为晚上8点。

我想要的条件是,当它是第5天(星期五)并且已超过截止时间(晚上8点)。它需要显示文本“星期一晚上之前的订单,星期四交付”。但是例如说今天是星期六上午9点,它仍然需要显示该消息。仅当它在星期一晚上8点过后才应该再次显示默认消息。

我编写的代码如下:

 if(moment().day() > 5 && moment().hour() > cutoff.hour() && moment().minute() > cutoff.minute()) {
                tempCutOff = moment().set({'day': 1, 'hour': cutoffValues[0] - 1, 'minute': cutoffValues[1] - 1});
                tempTimeLeft = moment(tempCutOff.diff(moment()))

                $('.timerText').html("Order before " + tempCutOff.format('dddd') + "evening");
                if(tempTimeLeft.days() > 0) {
                    str = tempTimeLeft.days() + " days " + tempTimeLeft.hours() + " hours and " + timeLeft.minutes() + " minutes";
                } else {
                    str = timeLeft.hours() + " hours and " + timeLeft.minutes() + " minutes";
                }
                $("#orderCountdownTimer").html(str);
                tempCutOff.add(1, 'days')
                $('.timerTextExtra').html("delivered on " + tempCutOff.format('dddd'));
            }

编辑:: 声明

let cutoffValues = $('.cutoff_value').val().split(":");
let str = "";
let cutoff = moment().set({'day': moment().day(), 'hour': cutoffValues[0] - 1, 'minute': cutoffValues[1]})

let timeLeft = moment(cutoff.diff(moment()));
let tempCutOff;
let tempTimeLeft;

此if语句的问题在于,如果它是Satuday 9am。此条件再次为假。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

最好比较整个日期时间,而不要单独检查每个字段。

首先计算下一个截止时间,如果已超过星期五,则将其设置为星期五。

let cutoff = moment().set({'hour': cutoffValues[0] - 1, 'minute': cutoffValues[1]})
if ( moment().day() > 5 ) { cutoff.set({'day': 5}) }

然后比较当前时间是否超过了截止时间

if ( moment().isAfter(cutoff) {
  (...)
}

答案 1 :(得分:0)

在使用moment.js时,您只需检查日期是否在其他两个日期之间,因此假设您创建了一个cutOffStart(星期五,晚上8点)和一个cutOffEnd (星期一,晚上8点)。
这应该可以解决问题:

const current = moment();

const cutoffStart = moment();
cutoffStart.day('Friday').hour('8');

const cutoffEnd = moment();
cutoffEnd.day('Monday').hour('8');

if(current.isBetween(cutoffStart, cutoffEnd)){
 // display your text
}

您仍然可以使用moment.js .diff方法来获取两者之间的日期和时间差异

相关问题