Release 0.0.2 #17
26
src/shared/constants/date.js
Normal file
26
src/shared/constants/date.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
export const MONTHS = {
|
||||||
|
JANUARY: 0,
|
||||||
|
FEBRUARY: 1,
|
||||||
|
MARCH: 2,
|
||||||
|
APRIL: 3,
|
||||||
|
MAY: 4,
|
||||||
|
JUNE: 5,
|
||||||
|
JULY: 6,
|
||||||
|
AUGUST: 7,
|
||||||
|
SEPTEMBER: 8,
|
||||||
|
OCTOBER: 9,
|
||||||
|
NOVEMBER: 10,
|
||||||
|
DECEMBER: 11,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const DAYS_IN_WEEK = 7;
|
||||||
|
|
||||||
|
export const WEEK_DAYS = {
|
||||||
|
SUNDAY: 0,
|
||||||
|
MONDAY: 1,
|
||||||
|
TUESDAY: 2,
|
||||||
|
WEDNESDAY: 3,
|
||||||
|
THURSDAY: 4,
|
||||||
|
FRIDAY: 5,
|
||||||
|
SATURDAY: 6,
|
||||||
|
};
|
||||||
2
src/shared/constants/index.js
Normal file
2
src/shared/constants/index.js
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { DAYS_IN_WEEK, MONTHS, WEEK_DAYS } from './date';
|
||||||
|
export { MONTHS_LABEL, WEEK_DAYS_LABEL } from './locale';
|
||||||
125
src/shared/constants/locale.js
Normal file
125
src/shared/constants/locale.js
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
import { MONTHS, WEEK_DAYS } from './date';
|
||||||
|
|
||||||
|
export const MONTHS_LABEL = {
|
||||||
|
[MONTHS.JANUARY]: {
|
||||||
|
ru: 'Январь',
|
||||||
|
en: 'January',
|
||||||
|
},
|
||||||
|
[MONTHS.FEBRUARY]: {
|
||||||
|
ru: 'Февраль',
|
||||||
|
en: 'February',
|
||||||
|
},
|
||||||
|
[MONTHS.MARCH]: {
|
||||||
|
ru: 'Март',
|
||||||
|
en: 'March',
|
||||||
|
},
|
||||||
|
[MONTHS.APRIL]: {
|
||||||
|
ru: 'Апрель',
|
||||||
|
en: 'April',
|
||||||
|
},
|
||||||
|
[MONTHS.MAY]: {
|
||||||
|
ru: 'Май',
|
||||||
|
en: 'May',
|
||||||
|
},
|
||||||
|
[MONTHS.JUNE]: {
|
||||||
|
ru: 'Июнь',
|
||||||
|
en: 'June',
|
||||||
|
},
|
||||||
|
[MONTHS.JULY]: {
|
||||||
|
ru: 'Июль',
|
||||||
|
en: 'July',
|
||||||
|
},
|
||||||
|
[MONTHS.AUGUST]: {
|
||||||
|
ru: 'Август',
|
||||||
|
en: 'August',
|
||||||
|
},
|
||||||
|
[MONTHS.SEPTEMBER]: {
|
||||||
|
ru: 'Сентябрь',
|
||||||
|
en: 'September',
|
||||||
|
},
|
||||||
|
[MONTHS.OCTOBER]: {
|
||||||
|
ru: 'Октябрь',
|
||||||
|
en: 'October',
|
||||||
|
},
|
||||||
|
[MONTHS.NOVEMBER]: {
|
||||||
|
ru: 'Ноябрь',
|
||||||
|
en: 'November',
|
||||||
|
},
|
||||||
|
[MONTHS.DECEMBER]: {
|
||||||
|
ru: 'Декабрь',
|
||||||
|
en: 'December',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const WEEK_DAYS_LABEL = {
|
||||||
|
[WEEK_DAYS.SUNDAY]: {
|
||||||
|
ru: {
|
||||||
|
full: 'Воскресенье',
|
||||||
|
short: 'Вс',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
full: 'Sunday',
|
||||||
|
short: 'Sun',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[WEEK_DAYS.MONDAY]: {
|
||||||
|
ru: {
|
||||||
|
full: 'Понедельник',
|
||||||
|
short: 'Пн',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
full: 'Monday',
|
||||||
|
short: 'Mon',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[WEEK_DAYS.TUESDAY]: {
|
||||||
|
ru: {
|
||||||
|
full: 'Вторник',
|
||||||
|
short: 'Вт',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
full: 'Tuesday',
|
||||||
|
short: 'Tue',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[WEEK_DAYS.WEDNESDAY]: {
|
||||||
|
ru: {
|
||||||
|
full: 'Среда',
|
||||||
|
short: 'Ср',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
full: 'Wednesday',
|
||||||
|
short: 'Wed',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[WEEK_DAYS.THURSDAY]: {
|
||||||
|
ru: {
|
||||||
|
full: 'Четверг',
|
||||||
|
short: 'Чт',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
full: 'Thursday',
|
||||||
|
short: 'Thu',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[WEEK_DAYS.FRIDAY]: {
|
||||||
|
ru: {
|
||||||
|
full: 'Пятница',
|
||||||
|
short: 'Пт',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
full: 'Friday',
|
||||||
|
short: 'Fri',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[WEEK_DAYS.SATURDAY]: {
|
||||||
|
ru: {
|
||||||
|
full: 'Суббота',
|
||||||
|
short: 'Сб',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
full: 'Saturday',
|
||||||
|
short: 'Sat',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
13
src/shared/utils/date/date.js
Normal file
13
src/shared/utils/date/date.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
export const firstDayOfMonthDate = (date) => {
|
||||||
|
const monthIndex = date.getMonth();
|
||||||
|
const year = date.getFullYear();
|
||||||
|
|
||||||
|
return new Date(year, monthIndex, 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const lastDayOfMonthDate = (date) => {
|
||||||
|
const monthIndex = date.getMonth();
|
||||||
|
const year = date.getFullYear();
|
||||||
|
|
||||||
|
return new Date(year, monthIndex + 1, 0);
|
||||||
|
};
|
||||||
89
src/shared/utils/date/date.spec.js
Normal file
89
src/shared/utils/date/date.spec.js
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
import { firstDayOfMonthDate, lastDayOfMonthDate } from './date';
|
||||||
|
|
||||||
|
describe('Check firstDayOfMonthDate func', () => {
|
||||||
|
test('Check middle of month', () => {
|
||||||
|
const date = new Date(2022, 7, 15);
|
||||||
|
const result = new Date(2022, 7, 1);
|
||||||
|
expect(firstDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check end of year', () => {
|
||||||
|
const date = new Date(2024, 11, 31);
|
||||||
|
const result = new Date(2024, 11, 1);
|
||||||
|
expect(firstDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check start of year', () => {
|
||||||
|
const date = new Date(2024, 0, 0);
|
||||||
|
const result = new Date(2023, 11, 1);
|
||||||
|
expect(firstDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with 0 date', () => {
|
||||||
|
const date = new Date(2023, 12, 0);
|
||||||
|
const result = new Date(2023, 11, 1);
|
||||||
|
expect(firstDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with extra month', () => {
|
||||||
|
const date = new Date(2023, 12, 1);
|
||||||
|
const result = new Date(2024, 0, 1);
|
||||||
|
expect(firstDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with extra date', () => {
|
||||||
|
const date = new Date(2023, 11, 33);
|
||||||
|
const result = new Date(2024, 0, 1);
|
||||||
|
expect(firstDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with extra date and month', () => {
|
||||||
|
const date = new Date(2023, 12, 33);
|
||||||
|
const result = new Date(2024, 1, 1);
|
||||||
|
expect(firstDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Check lastDayOfMonthDate func', () => {
|
||||||
|
test('Check middle of month', () => {
|
||||||
|
const date = new Date(2022, 7, 15);
|
||||||
|
const result = new Date(2022, 7, 31);
|
||||||
|
expect(lastDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check end of year', () => {
|
||||||
|
const date = new Date(2024, 11, 31);
|
||||||
|
const result = new Date(2024, 11, 31);
|
||||||
|
expect(lastDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check start of year', () => {
|
||||||
|
const date = new Date(2024, 0, 0);
|
||||||
|
const result = new Date(2023, 11, 31);
|
||||||
|
expect(lastDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with 0 date', () => {
|
||||||
|
const date = new Date(2023, 12, 0);
|
||||||
|
const result = new Date(2023, 11, 31);
|
||||||
|
expect(lastDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with extra month', () => {
|
||||||
|
const date = new Date(2023, 12, 1);
|
||||||
|
const result = new Date(2024, 0, 31);
|
||||||
|
expect(lastDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with extra date', () => {
|
||||||
|
const date = new Date(2023, 11, 33);
|
||||||
|
const result = new Date(2024, 0, 31);
|
||||||
|
expect(lastDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Check with extra date and month', () => {
|
||||||
|
const date = new Date(2023, 12, 33);
|
||||||
|
const result = new Date(2024, 1, 29);
|
||||||
|
expect(lastDayOfMonthDate(date)).toEqual(result);
|
||||||
|
});
|
||||||
|
});
|
||||||
4
src/shared/utils/date/index.js
Normal file
4
src/shared/utils/date/index.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export {
|
||||||
|
lastDayOfMonthDate,
|
||||||
|
firstDayOfMonthDate,
|
||||||
|
} from './date';
|
||||||
Loading…
x
Reference in New Issue
Block a user