diff --git a/src/renderer/components/data-settings/data-settings.js b/src/renderer/components/data-settings/data-settings.js index 777fe4da9..442b71ded 100644 --- a/src/renderer/components/data-settings/data-settings.js +++ b/src/renderer/components/data-settings/data-settings.js @@ -9,11 +9,12 @@ import { MAIN_PROFILE_ID } from '../../../constants' import { calculateColorLuminance, getRandomColor } from '../../helpers/colors' import { copyToClipboard, + getTodayDateStrLocalTimezone, readFileFromDialog, showOpenDialog, showSaveDialog, showToast, - writeFileFromDialog + writeFileFromDialog, } from '../../helpers/utils' import { invidiousAPICall } from '../../helpers/api/invidious' import { getLocalChannel } from '../../helpers/api/local' @@ -509,8 +510,8 @@ export default defineComponent({ const subscriptionsDb = this.profileList.map((profile) => { return JSON.stringify(profile) }).join('\n') + '\n'// a trailing line is expected - const date = new Date().toISOString().split('T')[0] - const exportFileName = 'freetube-subscriptions-' + date + '.db' + const dateStr = getTodayDateStrLocalTimezone() + const exportFileName = 'freetube-subscriptions-' + dateStr + '.db' const options = { defaultPath: exportFileName, @@ -526,8 +527,8 @@ export default defineComponent({ }, exportYouTubeSubscriptions: async function () { - const date = new Date().toISOString().split('T')[0] - const exportFileName = 'youtube-subscriptions-' + date + '.json' + const dateStr = getTodayDateStrLocalTimezone() + const exportFileName = 'youtube-subscriptions-' + dateStr + '.json' const options = { defaultPath: exportFileName, @@ -579,8 +580,8 @@ export default defineComponent({ }, exportOpmlYouTubeSubscriptions: async function () { - const date = new Date().toISOString().split('T')[0] - const exportFileName = 'youtube-subscriptions-' + date + '.opml' + const dateStr = getTodayDateStrLocalTimezone() + const exportFileName = 'youtube-subscriptions-' + dateStr + '.opml' const options = { defaultPath: exportFileName, @@ -612,8 +613,8 @@ export default defineComponent({ }, exportCsvYouTubeSubscriptions: async function () { - const date = new Date().toISOString().split('T')[0] - const exportFileName = 'youtube-subscriptions-' + date + '.csv' + const dateStr = getTodayDateStrLocalTimezone() + const exportFileName = 'youtube-subscriptions-' + dateStr + '.csv' const options = { defaultPath: exportFileName, @@ -639,8 +640,8 @@ export default defineComponent({ }, exportNewPipeSubscriptions: async function () { - const date = new Date().toISOString().split('T')[0] - const exportFileName = 'newpipe-subscriptions-' + date + '.json' + const dateStr = getTodayDateStrLocalTimezone() + const exportFileName = 'newpipe-subscriptions-' + dateStr + '.json' const options = { defaultPath: exportFileName, @@ -744,8 +745,8 @@ export default defineComponent({ const historyDb = this.historyCache.map((historyEntry) => { return JSON.stringify(historyEntry) }).join('\n') + '\n' - const date = new Date().toISOString().split('T')[0] - const exportFileName = 'freetube-history-' + date + '.db' + const dateStr = getTodayDateStrLocalTimezone() + const exportFileName = 'freetube-history-' + dateStr + '.db' const options = { defaultPath: exportFileName, @@ -875,8 +876,8 @@ export default defineComponent({ }, exportPlaylists: async function () { - const date = new Date().toISOString().split('T')[0] - const exportFileName = 'freetube-playlists-' + date + '.db' + const dateStr = getTodayDateStrLocalTimezone() + const exportFileName = 'freetube-playlists-' + dateStr + '.db' const options = { defaultPath: exportFileName, diff --git a/src/renderer/helpers/utils.js b/src/renderer/helpers/utils.js index 43f6ef5bc..36b1f0127 100644 --- a/src/renderer/helpers/utils.js +++ b/src/renderer/helpers/utils.js @@ -619,3 +619,14 @@ export function toDistractionFreeTitle(title, minUpperCase = 3) { export function formatNumber(number, options = undefined) { return Intl.NumberFormat([i18n.locale.replace('_', '-'), 'en'], options).format(number) } + +export function getTodayDateStrLocalTimezone() { + const timeNow = new Date() + // `Date#getTimezoneOffset` returns the difference, in minutes + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset + const timeNowStr = new Date(timeNow.getTime() - (timeNow.getTimezoneOffset() * 60000)).toISOString() + // `Date#toISOString` returns string with `T` as date/time separator (ISO 8601 format) + // e.g. 2011-10-05T14:48:00.000Z + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString + return timeNowStr.split('T')[0] +}