Look at a date range and return true if todays date is within the range

NeilH2
Giga Guru

I'm trying to look at a date range (valid from - valid to) and if today's date is within the range i want it to return true

 

my code up to now:


var ifTrue = false;
var todaysdate = gs.now();

//if todays date is more than or equal to the from date and todays date is less than or equal to the to date return true

if (todaysdate >= current.u_valid_from && todaysdate <= current.u_valid_to){

   ifTrue = true;

   }

 

Logically this should work but it isn't and I was wondering if anyone knew of a better way to do it, maybe using a built in function/glide-script?

1 ACCEPTED SOLUTION

casey_stinnett
Giga Expert

This script should do it for you! I tested it and it worked for me.



var todaysdate = gs.now();


var valid_from = new GlideDateTime(current.u_valid_from);


var valid_to = new GlideDateTime(current.u_valid_to);



//if today's date is more than or equal to the from date and today's date is less than or equal to the to date, return true


var inRange = (todaysdate >= valid_from && todaysdate <= valid_to)? true: false;


if (inRange){


  //do your thing, yo


}




Did this help you?


View solution in original post

10 REPLIES 10

DrewW
Mega Sage
Mega Sage

You need to convert the date/times into numbers using getNumericValue() for the data/time objects.   Something like this but its going to depend on your data types for the fields so you may need to force them to GlideObject/GlideDateTime first then get the numeric value.




  1. if (todaysdate.getNumericValue() >= current.u_valid_from.getNumericValue() && todaysdate.getNumericValue() <= current.u_valid_to.getNumericValue()){  
  2.  
  3.   ifTrue = true;  
  4.  
  5.   }  

casey_stinnett
Giga Expert

This script should do it for you! I tested it and it worked for me.



var todaysdate = gs.now();


var valid_from = new GlideDateTime(current.u_valid_from);


var valid_to = new GlideDateTime(current.u_valid_to);



//if today's date is more than or equal to the from date and today's date is less than or equal to the to date, return true


var inRange = (todaysdate >= valid_from && todaysdate <= valid_to)? true: false;


if (inRange){


  //do your thing, yo


}




Did this help you?


Hi Casey



Still not working but i think this is close



My Printed results show the date values in different formats:


Todays Date 07-11-2014 10:24:33


Valid_from 2014-11-06 00:00:00
Valid_to 2014-11-08 00:00:00


Hi Neil,



Modify Casey's code in this way and see if it works.



  1. var todaysdate = new GlideDateTime(gs.now()+" 00:00:00").getDisplayValue();  
  2. var valid_from = new GlideDateTime(current.u_valid_from).getDisplayValue();  
  3. var valid_to = new GlideDateTime(current.u_valid_to).getDisplayValue();  
  4.  
  5. //if today's date is more than or equal to the from date and today's date is less than or equal to the to date, return true  
  6. var inRange = (todaysdate >= valid_from && todaysdate <= valid_to)? true: false;  
  7. if (inRange){  
  8.   //do your thing, yo  
  9. }  
-Anurag

NeilH2
Giga Guru

adding the display value to the end made it work thanks