Select to view content in your preferred language

Arcade Expression - Inspection Date in Current Quarter of Year

1441
4
Jump to solution
08-01-2022 08:42 AM
AshleyHayes2
Regular Contributor

Hello!  

I am trying to figure out how to write an Arcade expression that will determine if an inspection date occurred within the current quarter of the year (Jan-Mar, Apr-Jun, Jul-Sep, Oct-Dec).  My sense is that I need to convert the current date to quarter and the inspection date to quarter and see if they match, but I am not sure of the details for how to set that up.  Anyone done this before or have suggestions?

Thanks!

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
KenBuja
MVP Esteemed Contributor

Here's one way to do it

 

var theDate = Date();
var testDate = Date(2022,7,4);

var theMonth = Month(theDate); //note Month is zero-based (Jan = 0)
var theYear = Year(theDate);
var quarter;
when (theMonth < 3, quarter = 1,
      theMonth < 6, quarter = 2,
      theMonth < 9, quarter = 3,
      quarter = 4);

var testMonth = Month(testDate);
var testYear = Year(testDate);
var testquarter;
when (testMonth < 3, testquarter = 1,
      testMonth < 6, testquarter = 2,
      testMonth < 9, testquarter = 3,
      testquarter = 4);
 
var output = "In current quarter";    
if (quarter != testquarter || theYear != testYear) output = "Not in current quarter";
return output;

 

View solution in original post

4 Replies
KenBuja
MVP Esteemed Contributor

Here's one way to do it

 

var theDate = Date();
var testDate = Date(2022,7,4);

var theMonth = Month(theDate); //note Month is zero-based (Jan = 0)
var theYear = Year(theDate);
var quarter;
when (theMonth < 3, quarter = 1,
      theMonth < 6, quarter = 2,
      theMonth < 9, quarter = 3,
      quarter = 4);

var testMonth = Month(testDate);
var testYear = Year(testDate);
var testquarter;
when (testMonth < 3, testquarter = 1,
      testMonth < 6, testquarter = 2,
      testMonth < 9, testquarter = 3,
      testquarter = 4);
 
var output = "In current quarter";    
if (quarter != testquarter || theYear != testYear) output = "Not in current quarter";
return output;

 

jcarlson
MVP Esteemed Contributor

There isn't a function to directly pull out the quarter, but you could make your own using the month number easily enough. Assuming you already have a way of pulling your inspection date figured out, the rest of it could look like this:

// return quarter for a given date
function Quarter(d){
    var month_num = Month(d)
    
    return When(
        month_num < 3, 1,
        month_num < 6, 2,
        month_num < 9, 3,
        4
    )
}

// get your inspection date; i'm using a prior date as a placeholder
var insp = Date(2022,7,13)

// get quarter and year for inspection
var i_qtr = Quarter(insp)
var i_yr = Year(insp)

Console(`Inspection occurred Q${i_qtr} of ${i_yr}.`)

// get current quarter and year
var curr_qtr = Quarter(Now())
var curr_yr = Year(Now())

// return True if inspection is in current year and quarter
i_qtr == curr_qtr && i_yr == curr_yr

 Using a placeholder of sometime last month, I get a true. Changing that to sometime in February, it switches to false.

Oh and here's the console output, just to show what that's doing:

jcarlson_0-1659370679864.png

 

- Josh Carlson
Kendall County GIS
AshleyHayes2
Regular Contributor

Worked great in my web map!  Now, is it possible to use or calculate that "current quarter" information in a Dashboard gauge or indicator?  Thanks!!

0 Kudos
AshleyHayes2
Regular Contributor

It turns out that KenBuja's code needed a small change to the When functions.

var quarter = when (theMonth < 3, 1,
      theMonth < 6, 2,
      theMonth < 9, 3,
      theMonth < 12, 4,
      "Fail");