Skip to content

Commit

Permalink
intlDateFormats
Browse files Browse the repository at this point in the history
  • Loading branch information
frodehansen2 committed Jan 19, 2024
1 parent 0dc976a commit 964351c
Show file tree
Hide file tree
Showing 4 changed files with 183 additions and 1 deletion.
5 changes: 4 additions & 1 deletion packages/sif-common-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,16 @@
"@types/react-dom": "18.2.18",
"@types/uuid": "9.0.7",
"config": "workspace:*",
"intl": "1.2.5",
"npm-run-all": "4.1.5",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-intl": "6.6.1",
"vitest": "1.2.0"
},
"scripts": {
"lint": "eslint ./src --ext ts,tsx",
"test": "vitest run"
"test": "vitest run",
"test-w": "vitest watch"
}
}
66 changes: 66 additions & 0 deletions packages/sif-common-utils/src/__tests__/intlDateFormat.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import { ISODateToDate } from '../';
import { intlDateFormats } from '../intlDateFormats';

describe('intlDateFormat', () => {
const date = ISODateToDate('2020-01-04');

it('compact', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.compact).format(date);
expect(result).toEqual('04.01.2020');
});
it('dateShortMonthYear', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.dateShortMonthYear).format(date);
expect(result).toEqual('4. jan. 2020');
});
it('weekday', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.weekday).format(date);
expect(result).toEqual('lørdag');
});
it('weekdayCompactDate', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.weekdayCompactDate).format(date);
expect(result).toEqual('lørdag 04.01.2020');
});
it('weekdayDateMonth', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.weekdayDateMonth).format(date);
expect(result).toEqual('lørdag 4. januar');
});
it('weekdayDateMonthYear', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.weekdayDateMonthYear).format(date);
expect(result).toEqual('lørdag 4. januar 2020');
});
it('weekdayDateShortMonth', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.weekdayDateShortMonth).format(date);
expect(result).toEqual('lørdag 4. jan.');
});
it('weekdayDateShortMonthYear', () => {
const result = Intl.DateTimeFormat('nb', intlDateFormats.weekdayDateShortMonthYear).format(date);
expect(result).toEqual('lørdag 4. jan. 2020');
});

describe('nynorsk', () => {
it('weekday', () => {
const result = Intl.DateTimeFormat('nn', intlDateFormats.weekday).format(date);
expect(result).toEqual('laurdag');
});
it('weekdayCompactDate', () => {
const result = Intl.DateTimeFormat('nn', intlDateFormats.weekdayCompactDate).format(date);
expect(result).toEqual('laurdag 04.01.2020');
});
it('weekdayDateMonth', () => {
const result = Intl.DateTimeFormat('nn', intlDateFormats.weekdayDateMonth).format(date);
expect(result).toEqual('laurdag 4. januar');
});
it('weekdayDateMonthYear', () => {
const result = Intl.DateTimeFormat('nn', intlDateFormats.weekdayDateMonthYear).format(date);
expect(result).toEqual('laurdag 4. januar 2020');
});
it('weekdayDateShortMonth', () => {
const result = Intl.DateTimeFormat('nn', intlDateFormats.weekdayDateShortMonth).format(date);
expect(result).toEqual('laurdag 4. jan.');
});
it('weekdayDateShortMonthYear', () => {
const result = Intl.DateTimeFormat('nn', intlDateFormats.weekdayDateShortMonthYear).format(date);
expect(result).toEqual('laurdag 4. jan. 2020');
});
});
});
111 changes: 111 additions & 0 deletions packages/sif-common-utils/src/intlDateFormats.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import { FormatDateOptions } from 'react-intl';

/**
*
* @param date: Date
* @returns 01.01.2020
*/
const compact: FormatDateOptions = {
day: '2-digit',
month: '2-digit',
year: 'numeric',
};
/**
*
* @param date: Date
* @returns 1. jan. 2021
*/
const dateShortMonthYear: FormatDateOptions = {
day: 'numeric',
month: 'short',
year: 'numeric',
};
/**
*
* @param date: Date
* @returns 1. januar 2021
*/
const full: FormatDateOptions = {
day: 'numeric',
month: 'long',
year: 'numeric',
};

/**
*
* @param date: Date
* @returns fredag
*/
const weekday: FormatDateOptions = {
weekday: 'long',
};

/**
*
* @param date: Date
* @returns fredag 01.01.2021
*/
const weekdayCompactDate: FormatDateOptions = {
day: '2-digit',
month: '2-digit',
year: 'numeric',
weekday: 'long',
};

/**
*
* @param date: Date
* @returns fredag 1. jan. 2021
*/
const weekdayDateShortMonthYear: FormatDateOptions = {
day: 'numeric',
month: 'short',
year: 'numeric',
weekday: 'long',
};

/**
*
* @param date: Date
* @returnsfredag 1. januar 2021
*/
const weekdayDateMonthYear: FormatDateOptions = {
day: 'numeric',
month: 'long',
year: 'numeric',
weekday: 'long',
};

/**
*
* @param date: Date
* @returns fredag 1. jan.
*/
const weekdayDateMonth: FormatDateOptions = {
day: 'numeric',
month: 'long',
weekday: 'long',
};

/**
*
* @param date: Date
* @returns fredag 1. januar
*/
const weekdayDateShortMonth: FormatDateOptions = {
day: 'numeric',
month: 'short',
weekday: 'long',
};

export const intlDateFormats: Record<string, FormatDateOptions> = {
compact,
dateShortMonthYear,
full,
weekday,
weekdayCompactDate,
weekdayDateMonth,
weekdayDateMonthYear,
weekdayDateShortMonth,
weekdayDateShortMonthYear,
};
2 changes: 2 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4080,11 +4080,13 @@ __metadata:
"@types/uuid": 9.0.7
config: "workspace:*"
dayjs: 1.11.10
intl: 1.2.5
iso8601-duration: 2.1.2
lodash: 4.17.21
npm-run-all: 4.1.5
react: 18.2.0
react-dom: 18.2.0
react-intl: 6.6.1
uuid: 9.0.1
vitest: 1.2.0
languageName: unknown
Expand Down

0 comments on commit 964351c

Please sign in to comment.