fix(Wait Node): Validate datetime for specific time mode (#14701)

Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Elias Meire <elias@meire.dev>
This commit is contained in:
Guillaume Jacquart
2025-04-18 10:26:21 +02:00
committed by GitHub
parent 3feab31792
commit 3641c1fb87
4 changed files with 109 additions and 21 deletions

View File

@@ -1,4 +1,3 @@
import { DateTime } from 'luxon';
import type {
IExecuteFunctions,
INodeExecutionData,
@@ -8,10 +7,11 @@ import type {
IWebhookFunctions,
} from 'n8n-workflow';
import {
NodeOperationError,
NodeConnectionTypes,
WAIT_INDEFINITELY,
FORM_TRIGGER_NODE_TYPE,
tryToParseDateTime,
NodeOperationError,
} from 'n8n-workflow';
import { updateDisplayOptions } from '../../utils/utilities';
@@ -506,20 +506,17 @@ export class Wait extends Webhook {
// a number of seconds added to the current timestamp
waitTill = new Date(new Date().getTime() + waitAmount);
} else {
const dateTimeStr = context.getNodeParameter('dateTime', 0) as string;
try {
const dateTimeStrRaw = context.getNodeParameter('dateTime', 0);
const parsedDateTime = tryToParseDateTime(dateTimeStrRaw, context.getTimezone());
if (isNaN(Date.parse(dateTimeStr))) {
waitTill = parsedDateTime.toUTC().toJSDate();
} catch (e) {
throw new NodeOperationError(
context.getNode(),
'[Wait node] Cannot put execution to wait because `dateTime` parameter is not a valid date. Please pick a specific date and time to wait until.',
);
}
waitTill = DateTime.fromFormat(dateTimeStr, "yyyy-MM-dd'T'HH:mm:ss", {
zone: context.getTimezone(),
})
.toUTC()
.toJSDate();
}
const waitValue = Math.max(waitTill.getTime() - new Date().getTime(), 0);