diff --git a/packages/core/src/NodeExecuteFunctions.ts b/packages/core/src/NodeExecuteFunctions.ts index bf2b7784f1..e7059bbee3 100644 --- a/packages/core/src/NodeExecuteFunctions.ts +++ b/packages/core/src/NodeExecuteFunctions.ts @@ -151,7 +151,6 @@ import Container from 'typedi'; import type { BinaryData } from './BinaryData/types'; import merge from 'lodash/merge'; import { InstanceSettings } from './InstanceSettings'; -import { toUtcDate } from './utils'; axios.defaults.timeout = 300000; // Prevent axios from adding x-form-www-urlencoded headers by default @@ -3560,7 +3559,7 @@ export function getExecuteFunctions( binaryToBuffer: async (body: Buffer | Readable) => await Container.get(BinaryDataService).toBuffer(body), async putExecutionToWait(waitTill: Date): Promise { - runExecutionData.waitTill = toUtcDate(waitTill, getTimezone(workflow)); + runExecutionData.waitTill = waitTill; if (additionalData.setExecutionStatus) { additionalData.setExecutionStatus('waiting'); } diff --git a/packages/nodes-base/nodes/Wait/Wait.node.ts b/packages/nodes-base/nodes/Wait/Wait.node.ts index 888994a4a7..d640569394 100644 --- a/packages/nodes-base/nodes/Wait/Wait.node.ts +++ b/packages/nodes-base/nodes/Wait/Wait.node.ts @@ -1,3 +1,4 @@ +import { DateTime } from 'luxon'; import type { IExecuteFunctions, INodeExecutionData, @@ -29,7 +30,6 @@ import { } from '../Form/common.descriptions'; import { formWebhook } from '../Form/utils'; import { updateDisplayOptions } from '../../utils/utilities'; - import { Webhook } from '../Webhook/Webhook.node'; const waitTimeProperties: INodeProperties[] = [ @@ -420,12 +420,17 @@ export class Wait extends Webhook { waitAmount *= 1000; + // Timezone does not change relative dates, since they are just + // a number of seconds added to the current timestamp waitTill = new Date(new Date().getTime() + waitAmount); } else { - // resume: dateTime - const dateTime = context.getNodeParameter('dateTime', 0) as string; + const dateTimeStr = context.getNodeParameter('dateTime', 0) as string; - waitTill = new Date(dateTime); + 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);