diff --git a/src/common/datetime/format_date.ts b/src/common/datetime/format_date.ts index d8c46d4e8d..050006fe7d 100644 --- a/src/common/datetime/format_date.ts +++ b/src/common/datetime/format_date.ts @@ -9,3 +9,12 @@ export const formatDate = toLocaleDateStringSupportsOptions day: "numeric", }) : (dateObj: Date) => format(dateObj, "longDate"); + +export const formatDateWeekday = toLocaleDateStringSupportsOptions + ? (dateObj: Date, locales: string) => + dateObj.toLocaleDateString(locales, { + weekday: "long", + month: "short", + day: "numeric", + }) + : (dateObj: Date) => format(dateObj, "dddd, MMM D"); diff --git a/src/common/datetime/format_time.ts b/src/common/datetime/format_time.ts index c27874f3a6..6b79f0c173 100644 --- a/src/common/datetime/format_time.ts +++ b/src/common/datetime/format_time.ts @@ -17,3 +17,12 @@ export const formatTimeWithSeconds = toLocaleTimeStringSupportsOptions second: "2-digit", }) : (dateObj: Date) => format(dateObj, "mediumTime"); + +export const formatTimeWeekday = toLocaleTimeStringSupportsOptions + ? (dateObj: Date, locales: string) => + dateObj.toLocaleTimeString(locales, { + weekday: "long", + hour: "numeric", + minute: "2-digit", + }) + : (dateObj: Date) => format(dateObj, "dddd, HH:mm"); diff --git a/src/dialogs/more-info/controls/more-info-weather.ts b/src/dialogs/more-info/controls/more-info-weather.ts index 56018d8316..d750957fbc 100644 --- a/src/dialogs/more-info/controls/more-info-weather.ts +++ b/src/dialogs/more-info/controls/more-info-weather.ts @@ -29,6 +29,8 @@ import { PropertyValues, } from "lit-element"; import { html, TemplateResult } from "lit-html"; +import { formatDateWeekday } from "../../../common/datetime/format_date"; +import { formatTimeWeekday } from "../../../common/datetime/format_time"; import { formatNumber } from "../../../common/string/format_number"; import "../../../components/ha-svg-icon"; import { getWeatherUnit, getWind } from "../../../data/weather"; @@ -180,14 +182,20 @@ class MoreInfoWeather extends LitElement { ${!this._showValue(item.templow) ? html`
- ${this.computeDateTime(item.datetime)} + ${formatTimeWeekday( + new Date(item.datetime), + this.hass.language + )}
` : ""} ${this._showValue(item.templow) ? html`
- ${this.computeDate(item.datetime)} + ${formatDateWeekday( + new Date(item.datetime), + this.hass.language + )}
${formatNumber(item.templow, this.hass!.language)} @@ -253,23 +261,6 @@ class MoreInfoWeather extends LitElement { `; } - private computeDate(data) { - const date = new Date(data); - return date.toLocaleDateString(this.hass.language, { - weekday: "long", - month: "short", - day: "numeric", - }); - } - - private computeDateTime(data) { - const date = new Date(data); - return date.toLocaleDateString(this.hass.language, { - weekday: "long", - hour: "numeric", - }); - } - private _showValue(item: string): boolean { return typeof item !== "undefined" && item !== null; } diff --git a/src/panels/lovelace/cards/hui-weather-forecast-card.ts b/src/panels/lovelace/cards/hui-weather-forecast-card.ts index a8ac37379e..b247f8b073 100644 --- a/src/panels/lovelace/cards/hui-weather-forecast-card.ts +++ b/src/panels/lovelace/cards/hui-weather-forecast-card.ts @@ -9,6 +9,7 @@ import { PropertyValues, TemplateResult, } from "lit-element"; +import { formatTime } from "../../../common/datetime/format_time"; import { applyThemesOnElement } from "../../../common/dom/apply_themes_on_element"; import { fireEvent } from "../../../common/dom/fire_event"; import { computeStateDisplay } from "../../../common/entity/compute_state_display"; @@ -284,11 +285,9 @@ class HuiWeatherForecastCard extends LitElement implements LovelaceCard { ` : hourly ? html` - ${new Date(item.datetime).toLocaleTimeString( - this.hass!.language, - { - hour: "numeric", - } + ${formatTime( + new Date(item.datetime), + this.hass!.language )} ` : html`