Comparing time with MomentJS

10,096

To use == or < or > you need to convert the moment to a number. To do that use .valueOf(). For example:

today.valueOf() < moment('03:00', 'hh:mm').valueOf()

However, moment.js also provides methods that are more readable:

today.isBefore(moment('03:00', 'hh:mm'))

You can use .isBefore(), .isAfter(), .isSame(), .isSameOrBefore() etc. Read the documentation for more info: http://momentjs.com/docs/#/query/

Share:
10,096
YVS1102
Author by

YVS1102

Updated on June 08, 2022

Comments

  • YVS1102
    YVS1102 almost 2 years

    I'm trying to compare a time with momentJS. Here is My script

    $( document ).ready(function() {
    var today =moment();
    console.log(today.format("hh:mm"));
        if((today.format('D') == (moment().day("Sunday").format('D')) || (today.format('D') == moment().day('Saturday').format('D'))))
            {
                $('.kompensasi').val("100,000");
                $('.chk').hide();
            }
        else{       
            if((today.format("hh:mm") > moment('00:00', 'hh:mm')) && (today.format("hh:mm") < moment('03:00', 'hh:mm')))
                    {
                        $('.kompensasi').val("30,000");
                        $('.cekbok').val('');
                    }else{
                        $('.cekbok').val('Dapet RO 1');
                        $('.kompensasi').val("0");
                    }
            }
    });
    

    and here is my form

    <div class="col-sm-7">
    
    
    
                Kompensasi : <input name="dapet" type="text" readonly class="kompensasi" />
               </div>  
        </div>
                 <div class="form-group chk">
                          <label class="col-sm-3 control-label">Ro</label>
                          <div class="col-sm-7">
                          <input type="text" class='cekbok' name='rostatus' />
                          </div>
                </div>
    

    from console.log(today.format("hh:mm")) i get this resullt 01:44.

    With my script above i always go to the else, so is there any way to fix it ?

    Here is my fiddle https://jsfiddle.net/s9wfh9ye/33/

    My Upated Question

        var today =moment();
        var after  = moment(today.format("hh:mm")).isAfter(moment('00:00', "hh:mm"));
        var before = moment(today.format("hh:mm")).isBefore(moment('03:00', "hh:mm"));
    
            today.format('hh:mm').valueOf() -->02:17
    
            moment('00:00', 'hh:mm').valueOf() --> 1472058000000
    
            moment('03:00', 'hh:mm').valueOf() -->1472068800000
    
    
    
       console.log(after); // false
    
    console.log(before); // false