{"record":{"id":"8f630ace0fc05af0","repo":"kestra-io/kestra","slug":"the-islastworkingday-function-expects-a-date","errorCode":null,"errorMessage":"The 'isLastWorkingDay()' function expects a 'date' argument.","messagePattern":"The 'isLastWorkingDay\\(\\)' function expects a 'date' argument\\.","errorType":"validation","errorClass":"PebbleException","httpStatus":null,"severity":"critical","filePath":"core/src/main/java/io/kestra/core/runners/pebble/functions/IsLastWorkingDayFunction.java","lineNumber":49,"sourceCode":" * </ul>\n *\n * @param date any valid ISO 8601 date or datetime string\n * @param workingDays optional comma- or space-separated list of day names (e.g. {@code \"MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY\"})\n */\npublic class IsLastWorkingDayFunction implements KestraFunction {\n    public static final String NAME = \"isLastWorkingDay\";\n\n    private static final Set<DayOfWeek> DEFAULT_WORKING_DAYS = EnumSet.of(\n        DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY,\n        DayOfWeek.THURSDAY, DayOfWeek.FRIDAY\n    );\n\n    @Override\n    public Object execute(Map<String, Object> args, PebbleTemplate self, EvaluationContext context, int lineNumber) {\n        Object dateArg = args.get(\"date\");\n\n        if (dateArg == null) {\n            throw new PebbleException(null, \"The 'isLastWorkingDay()' function expects a 'date' argument.\", lineNumber, self.getName());\n        }\n\n        LocalDate localDate;\n        try {\n            localDate = DateUtils.parseLocalDate(dateArg.toString());\n        } catch (InternalException e) {\n            throw new PebbleException(e, \"The 'isLastWorkingDay()' function could not parse 'date': \" + e.getMessage(), lineNumber, self.getName());\n        }\n\n        Set<DayOfWeek> workingDays = resolveWorkingDays(args.get(\"workingDays\"), self, lineNumber);\n\n        if (!workingDays.contains(localDate.getDayOfWeek())) {\n            return false;\n        }\n\n        // Walk backwards from the last calendar day of the month to find the last working day\n        LocalDate lastOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());\n        LocalDate candidate = lastOfMonth;","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/kestra-io/kestra/blob/823fada9274c4f9c251ea0a516460a4f7d958032/core/src/main/java/io/kestra/core/runners/pebble/functions/IsLastWorkingDayFunction.java#L31-L67","documentation":"The isLastWorkingDay() function requires a 'date' argument. This fires when date is null or missing.","triggerScenarios":"Calling isLastWorkingDay() with no arguments, or with a date variable that resolved to null.","commonSituations":"Referencing an output that is not set, or forgetting the date argument.","solutions":["Pass a valid ISO date string as date (e.g. isLastWorkingDay(date='2024-01-31')).","Guard templated date values with 'is not empty' before calling."],"exampleFix":"// before\n{{ isLastWorkingDay() }}\n// after\n{{ isLastWorkingDay(date='2024-01-31') }}","handlingStrategy":"validation","validationCode":"{% if myDate is not empty %}{{ isLastWorkingDay(date=myDate) }}{% endif %}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass a date argument to isLastWorkingDay.","Guard templated date values with 'is not empty' before calling."],"tags":["pebble","date","argument","required-arg"],"backgroundTag":null,"analyzedSha":"823fada9274c4f9c251ea0a516460a4f7d958032","analyzedAt":"2026-08-14T06:15:17.947Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}