YVS1102 YVS1102 - 4 years ago 174
Javascript Question

Comparing time with MomentJS

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

$( document ).ready(function() {
var today =moment();
if((today.format('D') == (moment().day("Sunday").format('D')) || (today.format('D') == moment().day('Saturday').format('D'))))
if((today.format("hh:mm") > moment('00:00', 'hh:mm')) && (today.format("hh:mm") < moment('03:00', 'hh:mm')))
$('.cekbok').val('Dapet RO 1');

and here is my form

<div class="col-sm-7">

Kompensasi : <input name="dapet" type="text" readonly class="kompensasi" />
<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' />

i get this resullt

With my script above i always go to the
, 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

Answer Source

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/

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download