Skip to content

Commit 70f364a

Browse files
author
olga.karpova
committed
Date editing: prevent dates from jumping if local date doesn't equal to date in utc
1 parent 06ddb0e commit 70f364a

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

db-viewer-ui/src/Components/DateTimeRangePicker/DateTimePickerWithTimeZone.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function DateTimePickerWithTimeZone({
4040
onChange(null);
4141
return;
4242
}
43-
const date = DateUtils.convertDateToString(newDate, null, "yyyy-MM-dd");
43+
const date = DateUtils.convertDateToString(newDate, 0, "yyyy-MM-dd");
4444
const newDateTime = `${date}T${newTime ?? defaultTime}${newOffset ?? ""}`;
4545
onChange(newDateTime);
4646
};
@@ -52,7 +52,7 @@ export function DateTimePickerWithTimeZone({
5252
const timeOffset = getTimeZoneString(dateStr);
5353
setOffset(timeOffset);
5454
const dateTimeWithoutTimezone = timeOffset ? dateStr.slice(0, -timeOffset.length) : dateStr;
55-
setDate(new Date(dateTimeWithoutTimezone));
55+
setDate(DateUtils.fromLocalToUtc(new Date(dateTimeWithoutTimezone)));
5656
setTime(DateUtils.convertDateToString(dateTimeWithoutTimezone, null, "HH:mm:ss.SSS"));
5757
};
5858

@@ -71,7 +71,7 @@ export function DateTimePickerWithTimeZone({
7171
<DatePicker
7272
data-tid="Date"
7373
value={date}
74-
defaultTime={time || defaultTime}
74+
defaultTime={defaultTime}
7575
onChange={newDate => setDate(newDate)}
7676
error={error}
7777
disabled={disabled}

db-viewer-ui/src/Domain/Utils/DateUtils.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { addMinutes, format, parse } from "date-fns";
1+
import { addMinutes, format, parse, subMinutes } from "date-fns";
22

33
import { RussianDateFormat } from "../DataTypes/DateTimeRange";
44

@@ -26,4 +26,9 @@ export class DateUtils {
2626
const dateDate = new Date(date);
2727
return addMinutes(dateDate, dateDate.getTimezoneOffset() + timeZoneOffsetInMinutes);
2828
}
29+
30+
public static fromLocalToUtc(date: Date | string): Date {
31+
const dateDate = new Date(date);
32+
return subMinutes(dateDate, dateDate.getTimezoneOffset());
33+
}
2934
}

0 commit comments

Comments
 (0)