Skip to content

Commit a92562e

Browse files
authored
Add getFirstDayOfYear function (#63)
1 parent 949c4dd commit a92562e

3 files changed

Lines changed: 29 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515

1616
- Unnecessary dev-dependencies
1717

18+
### Added
19+
20+
- `getFirstDayOfYear` date utility function
21+
1822
## [1.2.2] - 2025-04-04
1923

2024
### Changed

src/lib/date.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
getNextBusinessDate,
99
getStartOfDay,
1010
getEndOfDay,
11+
getFirstDayOfYear,
1112
getLastDayOfYear,
1213
} from "./date";
1314

@@ -132,6 +133,21 @@ describe("date tests", () => {
132133
expect(getEndOfDay(date).getTime()).toBe(expected.getTime());
133134
});
134135

136+
test.each([
137+
[null as unknown as Date, new Date(Number.NaN)],
138+
[undefined as unknown as Date, new Date(Number.NaN)],
139+
[42 as unknown as Date, new Date(Number.NaN)],
140+
["test" as unknown as Date, new Date(Number.NaN)],
141+
])("getFirstDayOfYear", (date, expected) => {
142+
expect(getFirstDayOfYear(date).getTime()).toBe(expected.getTime());
143+
});
144+
145+
test("getFirstDayOfYear all days", () => {
146+
for (let date = new Date(2024, 0, 1); date < new Date(2025, 0, 1); date.setDate(date.getDate() + 1)) {
147+
expect(getFirstDayOfYear(date).getTime()).toBe(new Date(2024, 0, 1, 0, 0, 0, 0).getTime());
148+
}
149+
});
150+
135151
test.each([
136152
[null as unknown as Date, new Date(Number.NaN)],
137153
[undefined as unknown as Date, new Date(Number.NaN)],

src/lib/date.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,15 @@ export function getEndOfDay(date: Date): Date {
9595
return dateIsValid(date) ? endOfDay(date) : new Date(Number.NaN);
9696
}
9797

98+
/**
99+
* Get the first day of a year for the given date
100+
* @param date The date
101+
* @returns The first day of the date year
102+
*/
103+
export function getFirstDayOfYear(date: Date): Date {
104+
return dateIsValid(date) ? new Date(date.getFullYear(), 0, 1) : new Date(Number.NaN);
105+
}
106+
98107
/**
99108
* Get the last day of a year for the given date
100109
* @param date The date

0 commit comments

Comments
 (0)