Skip to content

Commit

Permalink
Resolved #6547 - Add various utility date related expression functions
Browse files Browse the repository at this point in the history
  • Loading branch information
tsv2013 committed Jul 28, 2023
1 parent d0e9bd0 commit bf10331
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/functionsfactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -311,3 +311,35 @@ function diffDays(params: any[]) {
return Math.ceil(diffTime / (1000 * 60 * 60 * 24));
}
FunctionFactory.Instance.register("diffDays", diffDays);

function dateFromFirstParameterOrToday(params: any[]) {
let date = today(undefined);
if (params && params[0]) {
date = new Date(params[0]);
}
return date;
}

function year(params: any[]): any {
let date = dateFromFirstParameterOrToday(params);
return date.getFullYear();
}
FunctionFactory.Instance.register("year", year);

function month(params: any[]): any {
let date = dateFromFirstParameterOrToday(params);
return date.getMonth() + 1;
}
FunctionFactory.Instance.register("month", month);

function day(params: any[]): any {
let date = dateFromFirstParameterOrToday(params);
return date.getDate();
}
FunctionFactory.Instance.register("day", day);

function weekday(params: any[]): any {
let date = dateFromFirstParameterOrToday(params);
return date.getDay();
}
FunctionFactory.Instance.register("weekday", weekday);
11 changes: 11 additions & 0 deletions tests/expressions/expressionParserTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1432,3 +1432,14 @@ QUnit.test("today(1) <= today(10)", function(assert) {
const runner = new ExpressionRunner("today(1) <= today(10)");
assert.deepEqual(runner.run({}), true, "today(1) <= today(10)");
});

QUnit.test("year, month, day, weekday", function(assert) {
let runner = new ExpressionRunner("year('2023-07-28')");
assert.deepEqual(runner.run({}), 2023, "year");
runner = new ExpressionRunner("month('2023-07-28')");
assert.deepEqual(runner.run({}), 7, "month");
runner = new ExpressionRunner("day('2023-07-28')");
assert.deepEqual(runner.run({}), 28, "day");
runner = new ExpressionRunner("weekday('2023-07-28')");
assert.deepEqual(runner.run({}), 5, "weekday");
});

0 comments on commit bf10331

Please sign in to comment.