diff --git a/src/filters/moment.js b/src/filters/moment.js index d61cee2e..29dae01e 100644 --- a/src/filters/moment.js +++ b/src/filters/moment.js @@ -5,13 +5,16 @@ export default function (value, format, options) { value = utils.getUnixTime(value); } - if (utils.isObject(options) && utils.isNumber(options.utcOffset)) { - if (!utils.isNumber(options.currentUtcOffset)) { - options.currentUtcOffset = utils.getTimezoneOffsetMinutes(); - } + let utcOffset = null; + let currentUtcOffset = null; - value = utils.getDummyUnixTimeForLocalDisplay(value, options.utcOffset, options.currentUtcOffset); + if (utils.isObject(options) && utils.isNumber(options.utcOffset)) { + utcOffset = options.utcOffset; } - return utils.formatUnixTime(value, format); + if (utils.isObject(options) && utils.isNumber(options.currentUtcOffset)) { + currentUtcOffset = options.currentUtcOffset; + } + + return utils.formatUnixTime(value, format, utcOffset, currentUtcOffset); } diff --git a/src/lib/utils.js b/src/lib/utils.js index 473ca977..28277e45 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -84,7 +84,7 @@ function getActualUnixTimeForStore(unixTime, utcOffset, currentUtcOffset) { return unixTime - (utcOffset - currentUtcOffset) * 60; } -function getDummyUnixTimeForLocalDisplay(unixTime, utcOffset, currentUtcOffset) { +function getDummyUnixTimeForLocalUsage(unixTime, utcOffset, currentUtcOffset) { return unixTime + (utcOffset - currentUtcOffset) * 60; } @@ -92,12 +92,20 @@ function getCurrentUnixTime() { return moment().unix(); } -function parseDateFromUnixTime(unixTime) { +function parseDateFromUnixTime(unixTime, utcOffset, currentUtcOffset) { + if (isNumber(utcOffset)) { + if (!isNumber(currentUtcOffset)) { + currentUtcOffset = getTimezoneOffsetMinutes(); + } + + unixTime = getDummyUnixTimeForLocalUsage(unixTime, utcOffset, currentUtcOffset); + } + return moment.unix(unixTime); } -function formatUnixTime(unixTime, format) { - return moment.unix(unixTime).format(format); +function formatUnixTime(unixTime, format, utcOffset, currentUtcOffset) { + return parseDateFromUnixTime(unixTime, utcOffset, currentUtcOffset).format(format); } function formatTime(dateTime, format) { @@ -625,7 +633,7 @@ export default { getTimezoneOffset, getTimezoneOffsetMinutes, getActualUnixTimeForStore, - getDummyUnixTimeForLocalDisplay, + getDummyUnixTimeForLocalUsage, getCurrentUnixTime, parseDateFromUnixTime, formatUnixTime, diff --git a/src/store/index.js b/src/store/index.js index 18ca8067..c77fc179 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -425,8 +425,7 @@ const stores = { const item = transactions.items[i]; fillTransactionObject(state, item, currentUtcOffset); - const transactionUnixTimeForLocalUsage = utils.getDummyUnixTimeForLocalDisplay(item.time, item.utcOffset, currentUtcOffset); - const transactionTime = utils.parseDateFromUnixTime(transactionUnixTimeForLocalUsage); + const transactionTime = utils.parseDateFromUnixTime(item.time, item.utcOffset, currentUtcOffset); const transactionYear = utils.getYear(transactionTime); const transactionMonth = utils.getMonth(transactionTime); const transactionYearMonth = utils.getYearAndMonth(transactionTime); diff --git a/src/store/transaction.js b/src/store/transaction.js index 271e3da5..06216107 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -284,8 +284,7 @@ export function fillTransactionObject(state, transaction, currentUtcOffset) { return; } - const transactionUnixTimeForLocalUsage = utils.getDummyUnixTimeForLocalDisplay(transaction.time, transaction.utcOffset, currentUtcOffset); - const transactionTime = utils.parseDateFromUnixTime(transactionUnixTimeForLocalUsage); + const transactionTime = utils.parseDateFromUnixTime(transaction.time, transaction.utcOffset, currentUtcOffset); transaction.day = utils.getDay(transactionTime); transaction.dayOfWeek = utils.getDayOfWeek(transactionTime); diff --git a/src/views/mobile/transactions/Edit.vue b/src/views/mobile/transactions/Edit.vue index 4a5c50aa..a8072589 100644 --- a/src/views/mobile/transactions/Edit.vue +++ b/src/views/mobile/transactions/Edit.vue @@ -643,7 +643,7 @@ export default { if (self.mode === 'edit' || self.mode === 'view') { self.transaction.utcOffset = transaction.utcOffset; self.transaction.timeZone = null; - self.transaction.unixTime = self.$utilities.getDummyUnixTimeForLocalDisplay(transaction.time, self.transaction.utcOffset, self.$utilities.getTimezoneOffsetMinutes()); + self.transaction.unixTime = self.$utilities.getDummyUnixTimeForLocalUsage(transaction.time, self.transaction.utcOffset, self.$utilities.getTimezoneOffsetMinutes()); self.transaction.time = self.$utilities.formatUnixTime(self.transaction.unixTime, 'YYYY-MM-DDTHH:mm'); }