diff --git a/app/scripts/comp/format/kdbx-to-html.js b/app/scripts/comp/format/kdbx-to-html.js
index 4be9dd7b..f9273899 100644
--- a/app/scripts/comp/format/kdbx-to-html.js
+++ b/app/scripts/comp/format/kdbx-to-html.js
@@ -2,7 +2,7 @@
import kdbxweb from 'kdbxweb';
import { RuntimeInfo } from 'const/runtime-info';
import { Links } from 'const/links';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { StringFormat } from 'util/formatting/string-format';
import { Locale } from 'util/locale';
diff --git a/app/scripts/comp/util/date-format.js b/app/scripts/comp/i18n/date-format.js
similarity index 81%
rename from app/scripts/comp/util/date-format.js
rename to app/scripts/comp/i18n/date-format.js
index 8f257fa1..c99751b7 100644
--- a/app/scripts/comp/util/date-format.js
+++ b/app/scripts/comp/i18n/date-format.js
@@ -2,25 +2,25 @@ import { SettingsManager } from 'comp/settings/settings-manager';
import { StringFormat } from 'util/formatting/string-format';
const DateFormat = {
- getMonthsForLocale() {
+ months() {
const format = new Intl.DateTimeFormat(SettingsManager.activeLocale, { month: 'long' });
const months = [];
for (let month = 0; month < 12; month++) {
- months.push(format.format(new Date(Date.UTC(2008, month))));
+ months.push(format.format(new Date(2008, month)));
}
return months;
},
- getWeekDaysForLocale() {
+ weekDays() {
const format = new Intl.DateTimeFormat(SettingsManager.activeLocale, { weekday: 'long' });
const weekdays = [];
for (let day = 1; day < 8; day++) {
- weekdays.push(format.format(new Date(Date.UTC(2007, 9, 6 + day))));
+ weekdays.push(format.format(new Date(2007, 9, 6 + day)));
}
return weekdays;
},
- getWeekdaysShortForLocale() {
+ shortWeekDays() {
const format = new Intl.DateTimeFormat(SettingsManager.activeLocale, { weekday: 'short' });
const weekdays = [];
for (let day = 1; day < 8; day++) {
@@ -35,12 +35,8 @@ const DateFormat = {
}
return dt
? new Intl.DateTimeFormat(SettingsManager.activeLocale, {
- year: 'numeric',
- month: 'short',
- day: 'numeric',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit'
+ dateStyle: 'medium',
+ timeStyle: 'medium'
}).format(dt)
: '';
},
diff --git a/app/scripts/models/app-model.js b/app/scripts/models/app-model.js
index a4822982..28f87f18 100644
--- a/app/scripts/models/app-model.js
+++ b/app/scripts/models/app-model.js
@@ -16,7 +16,7 @@ import { YubiKeyOtpModel } from 'models/external/yubikey-otp-model';
import { MenuModel } from 'models/menu/menu-model';
import { PluginManager } from 'plugins/plugin-manager';
import { Features } from 'util/features';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { UrlFormat } from 'util/formatting/url-format';
import { IdGenerator } from 'util/generators/id-generator';
import { Locale } from 'util/locale';
diff --git a/app/scripts/presenters/entry-presenter.js b/app/scripts/presenters/entry-presenter.js
index bb554e48..44444146 100644
--- a/app/scripts/presenters/entry-presenter.js
+++ b/app/scripts/presenters/entry-presenter.js
@@ -1,4 +1,4 @@
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { Locale } from 'util/locale';
const EntryPresenter = function (descField, noColor, activeEntryId) {
diff --git a/app/scripts/views/details/details-fields.js b/app/scripts/views/details/details-fields.js
index 211f7b65..d10e909f 100644
--- a/app/scripts/views/details/details-fields.js
+++ b/app/scripts/views/details/details-fields.js
@@ -1,6 +1,6 @@
import { Locale } from 'util/locale';
import { StringFormat } from 'util/formatting/string-format';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { AppModel } from 'models/app-model';
import { FieldViewReadOnly } from 'views/fields/field-view-read-only';
import { FieldViewOtp } from 'views/fields/field-view-otp';
diff --git a/app/scripts/views/details/details-history-view.js b/app/scripts/views/details/details-history-view.js
index 5f4e5cec..97ed8c2e 100644
--- a/app/scripts/views/details/details-history-view.js
+++ b/app/scripts/views/details/details-history-view.js
@@ -1,7 +1,7 @@
import { View } from 'framework/views/view';
import { Alerts } from 'comp/ui/alerts';
import { Keys } from 'const/keys';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { StringFormat } from 'util/formatting/string-format';
import { Locale } from 'util/locale';
import { Copyable } from 'framework/views/copyable';
diff --git a/app/scripts/views/fields/field-view-date.js b/app/scripts/views/fields/field-view-date.js
index 034e515c..e3c63777 100644
--- a/app/scripts/views/fields/field-view-date.js
+++ b/app/scripts/views/fields/field-view-date.js
@@ -1,5 +1,5 @@
import Pikaday from 'pikaday';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { FieldViewText } from 'views/fields/field-view-text';
class FieldViewDate extends FieldViewText {
@@ -29,9 +29,9 @@ class FieldViewDate extends FieldViewText {
i18n: {
previousMonth: '',
nextMonth: '',
- months: DateFormat.getMonthsForLocale(),
- weekdays: DateFormat.getWeekDaysForLocale(),
- weekdaysShort: DateFormat.getWeekdaysShortForLocale()
+ months: DateFormat.months(),
+ weekdays: DateFormat.weekDays(),
+ weekdaysShort: DateFormat.shortWeekDays()
}
});
this.picker.adjustPosition = this.adjustPickerPosition.bind(this);
diff --git a/app/scripts/views/settings/settings-file-view.js b/app/scripts/views/settings/settings-file-view.js
index a5cea10a..d0ab0f1f 100644
--- a/app/scripts/views/settings/settings-file-view.js
+++ b/app/scripts/views/settings/settings-file-view.js
@@ -8,7 +8,7 @@ import { YubiKey } from 'comp/app/yubikey';
import { UsbListener } from 'comp/app/usb-listener';
import { Links } from 'const/links';
import { AppSettingsModel } from 'models/app-settings-model';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { UrlFormat } from 'util/formatting/url-format';
import { PasswordPresenter } from 'util/formatting/password-presenter';
import { Locale } from 'util/locale';
diff --git a/app/scripts/views/settings/settings-general-view.js b/app/scripts/views/settings/settings-general-view.js
index ed013ae1..ebccb008 100644
--- a/app/scripts/views/settings/settings-general-view.js
+++ b/app/scripts/views/settings/settings-general-view.js
@@ -12,7 +12,7 @@ import { AppSettingsModel } from 'models/app-settings-model';
import { UpdateModel } from 'models/update-model';
import { SemVer } from 'util/data/semver';
import { Features } from 'util/features';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { Locale } from 'util/locale';
import { SettingsLogsView } from 'views/settings/settings-logs-view';
import { SettingsPrvView } from 'views/settings/settings-prv-view';
diff --git a/app/scripts/views/settings/settings-plugins-view.js b/app/scripts/views/settings/settings-plugins-view.js
index 0f64eef2..c293edca 100644
--- a/app/scripts/views/settings/settings-plugins-view.js
+++ b/app/scripts/views/settings/settings-plugins-view.js
@@ -10,7 +10,7 @@ import { PluginManager } from 'plugins/plugin-manager';
import { Comparators } from 'util/data/comparators';
import { SemVer } from 'util/data/semver';
import { Features } from 'util/features';
-import { DateFormat } from 'comp/util/date-format';
+import { DateFormat } from 'comp/i18n/date-format';
import { Locale } from 'util/locale';
import template from 'templates/settings/settings-plugins.hbs';
diff --git a/test/src/comp/i18n/date-format.js b/test/src/comp/i18n/date-format.js
new file mode 100644
index 00000000..1402d74d
--- /dev/null
+++ b/test/src/comp/i18n/date-format.js
@@ -0,0 +1,59 @@
+import { expect } from 'chai';
+import { DateFormat } from 'comp/i18n/date-format';
+
+describe('DateFormat', () => {
+ const dt = new Date(2020, 0, 2, 3, 4, 5, 6);
+
+ it('should return months', () => {
+ expect(DateFormat.months()).to.eql([
+ 'January',
+ 'February',
+ 'March',
+ 'April',
+ 'May',
+ 'June',
+ 'July',
+ 'August',
+ 'September',
+ 'October',
+ 'November',
+ 'December'
+ ]);
+ });
+
+ it('should return week days', () => {
+ expect(DateFormat.weekDays()).to.eql([
+ 'Sunday',
+ 'Monday',
+ 'Tuesday',
+ 'Wednesday',
+ 'Thursday',
+ 'Friday',
+ 'Saturday'
+ ]);
+ });
+
+ it('should return short week days', () => {
+ expect(DateFormat.shortWeekDays()).to.eql([
+ 'Sun',
+ 'Mon',
+ 'Tue',
+ 'Wed',
+ 'Thu',
+ 'Fri',
+ 'Sat'
+ ]);
+ });
+
+ it('should format date', () => {
+ expect(DateFormat.dStr(dt)).to.eql('Jan 2, 2020');
+ });
+
+ it('should format date and time', () => {
+ expect(DateFormat.dtStr(dt)).to.eql('Jan 2, 2020, 3:04:05 AM');
+ });
+
+ it('should format date and time in sortable format', () => {
+ expect(DateFormat.dtStrFs(dt)).to.eql('2020-01-02T03-04-05');
+ });
+});
diff --git a/test/src/util/formatting/date-format.js b/test/src/util/formatting/date-format.js
deleted file mode 100644
index 5361e912..00000000
--- a/test/src/util/formatting/date-format.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { expect } from 'chai';
-import { DateFormat } from 'comp/util/date-format';
-
-describe('DateFormat', () => {
- const dt = new Date(2020, 0, 2, 3, 4, 5, 6);
-
- it('should format date', () => {
- expect(DateFormat.dStr(dt)).to.eql('Jan 2, 2020');
- });
-
- it('should format date and time', () => {
- expect(DateFormat.dtStr(dt)).to.eql('Jan 2, 2020, 03:04:05');
- });
-
- it('should format date and time in sortable format', () => {
- expect(DateFormat.dtStrFs(dt)).to.eql('2020-01-02T03-04-05');
- });
-});