Fix some date-range bugs (#26441)

This commit is contained in:
karwosts 2025-08-08 06:57:54 -07:00 committed by GitHub
parent a7db401b62
commit c5010b8502
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 30 additions and 26 deletions

View File

@ -132,15 +132,13 @@ export const shiftDateRange = (
end = calcDate(endDate, addDays, locale, config, difference); end = calcDate(endDate, addDays, locale, config, difference);
} else { } else {
const difference = const difference =
((calcDateDifferenceProperty( (calcDateDifferenceProperty(
endDate, endDate,
startDate, startDate,
differenceInMilliseconds, differenceInMilliseconds,
locale, locale,
config config
) as number) + ) as number) * (forward ? 1 : -1);
1) *
(forward ? 1 : -1);
start = calcDate(startDate, addMilliseconds, locale, config, difference); start = calcDate(startDate, addMilliseconds, locale, config, difference);
end = calcDate(endDate, addMilliseconds, locale, config, difference); end = calcDate(endDate, addMilliseconds, locale, config, difference);
} }

View File

@ -254,21 +254,37 @@ export class HaDateRangePicker extends LitElement {
} }
private _applyDateRange() { private _applyDateRange() {
if (this.hass.locale.time_zone === TimeZone.server) { let start = new Date(this._dateRangePicker.start);
const dateRangePicker = this._dateRangePicker; let end = new Date(this._dateRangePicker.end);
const startDate = fromZonedTime( if (this.timePicker) {
dateRangePicker.start, start.setSeconds(0);
this.hass.config.time_zone start.setMilliseconds(0);
); end.setSeconds(0);
const endDate = fromZonedTime( end.setMilliseconds(0);
dateRangePicker.end,
this.hass.config.time_zone
);
dateRangePicker.clickRange([startDate, endDate]); if (
end.getHours() === 0 &&
end.getMinutes() === 0 &&
start.getFullYear() === end.getFullYear() &&
start.getMonth() === end.getMonth() &&
start.getDate() === end.getDate()
) {
end.setDate(end.getDate() + 1);
}
} }
if (this.hass.locale.time_zone === TimeZone.server) {
start = fromZonedTime(start, this.hass.config.time_zone);
end = fromZonedTime(end, this.hass.config.time_zone);
}
if (
start.getTime() !== this._dateRangePicker.start.getTime() ||
end.getTime() !== this._dateRangePicker.end.getTime()
) {
this._dateRangePicker.clickRange([start, end]);
}
this._dateRangePicker.clickedApply(); this._dateRangePicker.clickedApply();
} }

View File

@ -426,13 +426,7 @@ class HaPanelHistory extends LitElement {
private _dateRangeChanged(ev) { private _dateRangeChanged(ev) {
this._startDate = ev.detail.value.startDate; this._startDate = ev.detail.value.startDate;
const endDate = ev.detail.value.endDate; this._endDate = ev.detail.value.endDate;
if (endDate.getHours() === 0 && endDate.getMinutes() === 0) {
endDate.setDate(endDate.getDate() + 1);
endDate.setMilliseconds(endDate.getMilliseconds() - 1);
}
this._endDate = endDate;
this._updatePath(); this._updatePath();
} }

View File

@ -236,10 +236,6 @@ export class HaPanelLogbook extends LitElement {
private _dateRangeChanged(ev) { private _dateRangeChanged(ev) {
const startDate = ev.detail.value.startDate; const startDate = ev.detail.value.startDate;
const endDate = ev.detail.value.endDate; const endDate = ev.detail.value.endDate;
if (endDate.getHours() === 0 && endDate.getMinutes() === 0) {
endDate.setDate(endDate.getDate() + 1);
endDate.setMilliseconds(endDate.getMilliseconds() - 1);
}
this._time = { this._time = {
range: [startDate, endDate], range: [startDate, endDate],
}; };