From aed859666a2405da3d4bd879455bb440119503b5 Mon Sep 17 00:00:00 2001 From: SlimCandy Date: Wed, 8 Feb 2023 15:02:50 +0100 Subject: [PATCH] Add lastDayOfMonth support --- src/code-sandbox.json | 1 + .../date-fns/08-month/lastDayOfMonth/date-fns.js | 6 ++++++ .../date-fns/08-month/lastDayOfMonth/notes.md | 1 + .../date-fns/08-month/lastDayOfMonth/spec.js | 9 +++++++++ .../date-fns/08-month/lastDayOfMonth/vanilla.js | 13 +++++++++++++ 5 files changed, 30 insertions(+) create mode 100644 src/content/date-fns/08-month/lastDayOfMonth/date-fns.js create mode 100644 src/content/date-fns/08-month/lastDayOfMonth/notes.md create mode 100644 src/content/date-fns/08-month/lastDayOfMonth/spec.js create mode 100644 src/content/date-fns/08-month/lastDayOfMonth/vanilla.js diff --git a/src/code-sandbox.json b/src/code-sandbox.json index 829023ce..e9dbb6e7 100644 --- a/src/code-sandbox.json +++ b/src/code-sandbox.json @@ -61,6 +61,7 @@ "date-fns/08-month/getMonth": "https://codesandbox.io/s/jqquk?previewwindow=tests&file=/08-month/getMonth/vanilla.js", "date-fns/08-month/isFirstDayOfMonth": "https://codesandbox.io/s/ltltp?previewwindow=tests&file=/08-month/isFirstDayOfMonth/vanilla.js", "date-fns/08-month/isLastDayOfMonth": "https://codesandbox.io/s/d9veq?previewwindow=tests&file=/08-month/isLastDayOfMonth/vanilla.js", + "date-fns/08-month/lastDayOfMonth": "https://codesandbox.io/s/date-fns-lastdayofmonth-eun1ls?previewwindow=tests&file=/00-generic/compareDesc/vanilla.js", "date-fns/08-month/isSameMonth": "https://codesandbox.io/s/04clz?previewwindow=tests&file=/08-month/isSameMonth/vanilla.js", "date-fns/08-month/isThisMonth": "https://codesandbox.io/s/4u126?previewwindow=tests&file=/08-month/isThisMonth/vanilla.js", "date-fns/08-month/setMonth": "https://codesandbox.io/s/jcvuk?previewwindow=tests&file=/08-month/setMonth/vanilla.js", diff --git a/src/content/date-fns/08-month/lastDayOfMonth/date-fns.js b/src/content/date-fns/08-month/lastDayOfMonth/date-fns.js new file mode 100644 index 00000000..38b394a9 --- /dev/null +++ b/src/content/date-fns/08-month/lastDayOfMonth/date-fns.js @@ -0,0 +1,6 @@ +// https://date-fns.org/v2.29.3/docs/lastDayOfMonth +const lastDayOfMonth = require('date-fns/lastDayOfMonth') + +// Get the last day of a month. +module.exports = lastDayOfMonth(new Date(2014, 1, 25)).toDateString() +// => Fri Feb 28 2014 diff --git a/src/content/date-fns/08-month/lastDayOfMonth/notes.md b/src/content/date-fns/08-month/lastDayOfMonth/notes.md new file mode 100644 index 00000000..d4f676ec --- /dev/null +++ b/src/content/date-fns/08-month/lastDayOfMonth/notes.md @@ -0,0 +1 @@ +Get the last day of a month from date. \ No newline at end of file diff --git a/src/content/date-fns/08-month/lastDayOfMonth/spec.js b/src/content/date-fns/08-month/lastDayOfMonth/spec.js new file mode 100644 index 00000000..c9c5f517 --- /dev/null +++ b/src/content/date-fns/08-month/lastDayOfMonth/spec.js @@ -0,0 +1,9 @@ +const expected = 'Fri Feb 28 2014' + +const datefns = require('./date-fns') +const plain = require('./vanilla') + +test('lastDayOfMonth', () => { + expect(datefns).toEqual(expected) + expect(plain).toEqual(datefns) +}) diff --git a/src/content/date-fns/08-month/lastDayOfMonth/vanilla.js b/src/content/date-fns/08-month/lastDayOfMonth/vanilla.js new file mode 100644 index 00000000..eb290947 --- /dev/null +++ b/src/content/date-fns/08-month/lastDayOfMonth/vanilla.js @@ -0,0 +1,13 @@ +function lastDayOfMonth(date) { + const dateClone = new Date(date.getTime()) + const month = dateClone.getMonth() + dateClone.setDate(1) + dateClone.setMonth(month + 1) + dateClone.setDate(0) + + return dateClone +} + +// Get the last day of a month. +module.exports = lastDayOfMonth(new Date(2014, 1, 25)).toDateString() +// => Fri Feb 28 2014