mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-17 00:12:11 +08:00
use the daylight saving time zone as default time zone rather than the current standard time zone during the DST
This commit is contained in:
@@ -45,13 +45,6 @@ import { type CommonDateRangeSelectionProps, useDateRangeSelectionBase } from '@
|
||||
|
||||
import { useEnvironmentsStore } from '@/stores/environment.ts';
|
||||
|
||||
import {
|
||||
getLocalDatetimeFromUnixTime,
|
||||
getDummyUnixTimeForLocalUsage,
|
||||
getTimezoneOffsetMinutes,
|
||||
getBrowserTimezoneOffsetMinutes
|
||||
} from '@/lib/datetime.ts';
|
||||
|
||||
type DateTimePickerType = InstanceType<typeof DateTimePicker>;
|
||||
|
||||
const props = defineProps<CommonDateRangeSelectionProps>();
|
||||
@@ -62,7 +55,14 @@ const emit = defineEmits<{
|
||||
|
||||
const { tt } = useI18n();
|
||||
const { showToast } = useI18nUIComponents();
|
||||
const { dateRange, beginDateTime, endDateTime, presetRanges, getFinalDateRange } = useDateRangeSelectionBase(props);
|
||||
const {
|
||||
dateRange,
|
||||
beginDateTime,
|
||||
endDateTime,
|
||||
presetRanges,
|
||||
getLocalDatetimeFromSameDateTimeOfUnixTime,
|
||||
getFinalDateRange
|
||||
} = useDateRangeSelectionBase(props);
|
||||
|
||||
const environmentsStore = useEnvironmentsStore();
|
||||
|
||||
@@ -91,11 +91,11 @@ function cancel(): void {
|
||||
|
||||
function onSheetOpen(): void {
|
||||
if (props.minTime) {
|
||||
dateRange.value[0] = getLocalDatetimeFromUnixTime(getDummyUnixTimeForLocalUsage(props.minTime, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes()));
|
||||
dateRange.value[0] = getLocalDatetimeFromSameDateTimeOfUnixTime(props.minTime);
|
||||
}
|
||||
|
||||
if (props.maxTime) {
|
||||
dateRange.value[1] = getLocalDatetimeFromUnixTime(getDummyUnixTimeForLocalUsage(props.maxTime, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes()));
|
||||
dateRange.value[1] = getLocalDatetimeFromSameDateTimeOfUnixTime(props.maxTime);
|
||||
}
|
||||
|
||||
window.dispatchEvent(new Event('resize')); // fix vue-datepicker preset max-width
|
||||
|
||||
@@ -111,9 +111,7 @@ import { NumeralSystem } from '@/core/numeral.ts';
|
||||
import { isDefined } from '@/lib/common.ts';
|
||||
import {
|
||||
getHourIn12HourFormat,
|
||||
getLocalDatetimeFromUnixTime,
|
||||
getCurrentUnixTime,
|
||||
getUnixTimeFromLocalDatetime,
|
||||
getAMOrPM,
|
||||
getCombinedDateAndTimeValues
|
||||
} from '@/lib/datetime.ts';
|
||||
@@ -122,6 +120,7 @@ type DateTimePickerType = InstanceType<typeof DateTimePicker>;
|
||||
|
||||
const props = defineProps<{
|
||||
modelValue: number;
|
||||
timezoneUtcOffset: number;
|
||||
initMode?: string;
|
||||
show: boolean;
|
||||
}>();
|
||||
@@ -144,6 +143,8 @@ const {
|
||||
isSecondTwoDigits,
|
||||
isMeridiemIndicatorFirst,
|
||||
meridiemItems,
|
||||
getLocalDatetimeFromSameDateTimeOfUnixTime,
|
||||
getUnixTimeFromSameDateTimeOfLocalDatetime,
|
||||
getDisplayTimeValue,
|
||||
generateAllHours,
|
||||
generateAllMinutesOrSeconds
|
||||
@@ -160,7 +161,7 @@ let resetTimePickerItemPositionItemsLastOffsetTop: number | undefined = undefine
|
||||
let resetTimePickerItemPositionCheckedFrames: number | undefined = undefined;
|
||||
|
||||
const mode = ref<string>(props.initMode || 'time');
|
||||
const dateTime = ref<Date>(getLocalDatetimeFromUnixTime(props.modelValue || getCurrentUnixTime()));
|
||||
const dateTime = ref<Date>(getLocalDatetimeFromSameDateTimeOfUnixTime(props.modelValue || getCurrentUnixTime(), props.timezoneUtcOffset));
|
||||
const timePickerContainerHeight = ref<number | undefined>(undefined);
|
||||
const timePickerItemHeight = ref<number | undefined>(undefined);
|
||||
|
||||
@@ -213,7 +214,7 @@ function switchMode(): void {
|
||||
}
|
||||
|
||||
function setCurrentTime(): void {
|
||||
dateTime.value = getLocalDatetimeFromUnixTime(getCurrentUnixTime());
|
||||
dateTime.value = getLocalDatetimeFromSameDateTimeOfUnixTime(getCurrentUnixTime(), props.timezoneUtcOffset);
|
||||
|
||||
if (mode.value === 'time') {
|
||||
scrollAllTimeSelectedItems();
|
||||
@@ -225,7 +226,7 @@ function confirm(): void {
|
||||
return;
|
||||
}
|
||||
|
||||
const unixTime = getUnixTimeFromLocalDatetime(dateTime.value);
|
||||
const unixTime = getUnixTimeFromSameDateTimeOfLocalDatetime(dateTime.value, props.timezoneUtcOffset);
|
||||
|
||||
if (unixTime < 0) {
|
||||
showToast('Date is too early');
|
||||
@@ -420,7 +421,7 @@ function onSheetOpen(): void {
|
||||
mode.value = props.initMode || 'time';
|
||||
|
||||
if (props.modelValue) {
|
||||
dateTime.value = getLocalDatetimeFromUnixTime(props.modelValue);
|
||||
dateTime.value = getLocalDatetimeFromSameDateTimeOfUnixTime(props.modelValue, props.timezoneUtcOffset);
|
||||
}
|
||||
|
||||
if (mode.value === 'time') {
|
||||
|
||||
@@ -144,6 +144,7 @@ import {
|
||||
isNumber
|
||||
} from '@/lib/common.ts';
|
||||
import {
|
||||
parseDateTimeFromUnixTime,
|
||||
getYearMonthFirstUnixTime,
|
||||
getYearMonthLastUnixTime,
|
||||
getDateTypeByDateRange,
|
||||
@@ -200,11 +201,11 @@ const emit = defineEmits<{
|
||||
|
||||
const {
|
||||
tt,
|
||||
formatUnixTimeToShortDate,
|
||||
formatUnixTimeToGregorianLikeShortYear,
|
||||
formatUnixTimeToGregorianLikeShortYearMonth,
|
||||
formatDateTimeToShortDate,
|
||||
formatDateTimeToGregorianLikeShortYear,
|
||||
formatDateTimeToGregorianLikeShortYearMonth,
|
||||
formatYearQuarterToGregorianLikeYearQuarter,
|
||||
formatUnixTimeToGregorianLikeFiscalYear,
|
||||
formatDateTimeToGregorianLikeFiscalYear,
|
||||
formatAmountToLocalizedNumeralsWithCurrency
|
||||
} = useI18n();
|
||||
|
||||
@@ -324,18 +325,19 @@ const allDisplayDataItems = computed<TrendsBarChartData>(() => {
|
||||
dateRangeKey = `${dateRange.year}-${dateRange.month}-${dateRange.day}`;
|
||||
}
|
||||
|
||||
const minDateTime = parseDateTimeFromUnixTime(dateRange.minUnixTime);
|
||||
let displayDateRange = '';
|
||||
|
||||
if (props.dateAggregationType === ChartDateAggregationType.Year.type) {
|
||||
displayDateRange = formatUnixTimeToGregorianLikeShortYear(dateRange.minUnixTime);
|
||||
displayDateRange = formatDateTimeToGregorianLikeShortYear(minDateTime);
|
||||
} else if (props.dateAggregationType === ChartDateAggregationType.FiscalYear.type) {
|
||||
displayDateRange = formatUnixTimeToGregorianLikeFiscalYear(dateRange.minUnixTime);
|
||||
displayDateRange = formatDateTimeToGregorianLikeFiscalYear(minDateTime);
|
||||
} else if (props.dateAggregationType === ChartDateAggregationType.Quarter.type && 'quarter' in dateRange) {
|
||||
displayDateRange = formatYearQuarterToGregorianLikeYearQuarter(dateRange.year, dateRange.quarter);
|
||||
} else if (props.dateAggregationType === ChartDateAggregationType.Month.type) {
|
||||
displayDateRange = formatUnixTimeToGregorianLikeShortYearMonth(dateRange.minUnixTime);
|
||||
displayDateRange = formatDateTimeToGregorianLikeShortYearMonth(minDateTime);
|
||||
} else if (props.dateAggregationType === ChartDateAggregationType.Day.type && props.chartMode === 'daily') {
|
||||
displayDateRange = formatUnixTimeToShortDate(dateRange.minUnixTime);
|
||||
displayDateRange = formatDateTimeToShortDate(minDateTime);
|
||||
}
|
||||
|
||||
const dataItems = allDateRangeItemsMap[dateRangeKey] || [];
|
||||
|
||||
Reference in New Issue
Block a user