From 43b978658e60882b9253795169d3ce94ff43b288 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Tue, 27 Feb 2024 14:23:24 +0100 Subject: [PATCH] datetimefield: fix changing date to end of month from short months When selecting a new date, we get a date object from the currently selected date before the change. If that month has less days than what was selected for the new month, `setDate` will wrap that to the following month since the old month is still selected there. For example: select any date in april (has 30 days) then select the 31th of january this will actually select the 1st of january since we first get setDate: 20xx-04-XX -> 20xx-04-31 (wrap) -> 20xx-05-01 setMonth: 20xx-05-01 -> 20xx-01-01 To fix this, use the additional parameters of setFullYear[0] to set all of them simultaneously 0: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear Signed-off-by: Dominik Csapak --- src/form/DateTimeField.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/form/DateTimeField.js b/src/form/DateTimeField.js index 4bfa9bd..ea09f8a 100644 --- a/src/form/DateTimeField.js +++ b/src/form/DateTimeField.js @@ -24,9 +24,7 @@ Ext.define('Proxmox.DateTimeField', { return; } let datetime = new Date(this.get('datetime')); - datetime.setDate(date.getDate()); - datetime.setMonth(date.getMonth()); - datetime.setFullYear(date.getFullYear()); + datetime.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); this.set('datetime', datetime); }, },