diff --git a/src/lib/datetime.ts b/src/lib/datetime.ts index 82a9ef42..aed3aa4c 100644 --- a/src/lib/datetime.ts +++ b/src/lib/datetime.ts @@ -104,6 +104,20 @@ export function isPM(hour: number): boolean { } } +export function isUnixTimeYearMonthDayEquals(unixTime1: number, unixTime2: number): boolean { + const date1 = moment.unix(unixTime1); + const date2 = moment.unix(unixTime2); + + return date1.year() === date2.year() && date1.month() === date2.month() && date1.date() === date2.date(); +} + +export function isUnixTimeYearMonthDayHourEquals(unixTime1: number, unixTime2: number): boolean { + const date1 = moment.unix(unixTime1); + const date2 = moment.unix(unixTime2); + + return date1.year() === date2.year() && date1.month() === date2.month() && date1.date() === date2.date() && date1.hour() === date2.hour(); +} + export function getUtcOffsetByUtcOffsetMinutes(utcOffsetMinutes: number): string { const offsetHours = Math.trunc(Math.abs(utcOffsetMinutes) / 60); const offsetMinutes = Math.abs(utcOffsetMinutes) - offsetHours * 60; diff --git a/src/stores/exchangeRates.ts b/src/stores/exchangeRates.ts index e91ef88e..c474edbe 100644 --- a/src/stores/exchangeRates.ts +++ b/src/stores/exchangeRates.ts @@ -10,7 +10,11 @@ import type { } from '@/models/exchange_rate.ts'; import { isEquals } from '@/lib/common.ts'; -import { getCurrentUnixTime, formatUnixTime } from '@/lib/datetime.ts'; +import { + isUnixTimeYearMonthDayEquals, + isUnixTimeYearMonthDayHourEquals, + getCurrentUnixTime +} from '@/lib/datetime.ts'; import { getExchangedAmountByRate } from '@/lib/numeral.ts'; import logger from '@/lib/logger.ts'; @@ -128,13 +132,11 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => { const now = getCurrentUnixTime(); if (!force) { - if (currentExchangeRateData && currentExchangeRateData.time && currentExchangeRateData.data && - formatUnixTime(currentExchangeRateData.data.updateTime, 'YYYY-MM-DD') === formatUnixTime(now, 'YYYY-MM-DD')) { + if (currentExchangeRateData && currentExchangeRateData.time && currentExchangeRateData.data && isUnixTimeYearMonthDayEquals(currentExchangeRateData.data.updateTime, now)) { return Promise.resolve(currentExchangeRateData.data); } - if (currentExchangeRateData && currentExchangeRateData.time && currentExchangeRateData.data && - formatUnixTime(currentExchangeRateData.time, 'YYYY-MM-DD HH') === formatUnixTime(now, 'YYYY-MM-DD HH')) { + if (currentExchangeRateData && currentExchangeRateData.time && currentExchangeRateData.data && isUnixTimeYearMonthDayHourEquals(currentExchangeRateData.time, now)) { return Promise.resolve(currentExchangeRateData.data); } }