Convert month and year to ISO date
30 July 2025 (Updated 30 July 2025)
Implementation:
// Given a month and year, return an ISO date.
// Example: month = 7, year = 2020, result = 2020-07-01)
export function monthAndYearToIsoDate(month: number, year: number): string {
const isValidMonth = month >= 1 && month <= 12
const isValidYear = year > 0
if (!isValidMonth || !isValidYear) {
return 'Invalid date'
}
const date = new Date(year, month - 1)
return `${date.getFullYear()}-${padDatePartWithZero(month)}-01`
}
Vitest spec:
describe('monthAndYearToIsoDate', () => {
test("returns 'Invalid date' if date is invalid", () => {
expect(monthAndYearToIsoDate(0, 2020)).toEqual('Invalid date')
expect(monthAndYearToIsoDate(13, 2020)).toEqual('Invalid date')
expect(monthAndYearToIsoDate(-1, 2020)).toEqual('Invalid date')
expect(monthAndYearToIsoDate(5, 0)).toEqual('Invalid date')
expect(monthAndYearToIsoDate(5, -1)).toEqual('Invalid date')
})
test('returns correct ISO date if date is valid', () => {
expect(monthAndYearToIsoDate(1, 2012)).toEqual('2012-01-01')
expect(monthAndYearToIsoDate(7, 2020)).toEqual('2020-07-01')
expect(monthAndYearToIsoDate(12, 1993)).toEqual('1993-12-01')
})
})
Tagged:
Snippets