Back to Freecodecamp

Challenge 174: Zodiac Finder

curriculum/challenges/english/blocks/daily-coding-challenges-javascript/69738771fb5a7b8b24cca2a0.md

latest2.9 KB
Original Source

--description--

Given a date string in the format "YYYY-MM-DD", return the zodiac sign for that date using the following chart:

Date RangeZodiac Sign
March 21 - April 19"Aries"
April 20 - May 20"Taurus"
May 21 - June 20"Gemini"
June 21 - July 22"Cancer"
July 23 - August 22"Leo"
August 23 - September 22"Virgo"
September 23 - October 22"Libra"
October 23 - November 21"Scorpio"
November 22 - December 21"Sagittarius"
December 22 - January 19"Capricorn"
January 20 - February 18"Aquarius"
February 19 - March 20"Pisces"
  • Zodiac signs are based only on the month and day, you can ignore the year.

--hints--

getSign("2026-01-31") should return "Aquarius".

js
assert.equal(getSign("2026-01-31"), "Aquarius");

getSign("2001-06-10") should return "Gemini".

js
assert.equal(getSign("2001-06-10"), "Gemini");

getSign("1985-09-07") should return "Virgo".

js
assert.equal(getSign("1985-09-07"), "Virgo");

getSign("2023-03-19") should return "Pisces".

js
assert.equal(getSign("2023-03-19"), "Pisces");

getSign("2045-11-05") should return "Scorpio".

js
assert.equal(getSign("2045-11-05"), "Scorpio");

getSign("1985-12-06") should return "Sagittarius".

js
assert.equal(getSign("1985-12-06"), "Sagittarius");

getSign("2025-12-30") should return "Capricorn".

js
assert.equal(getSign("2025-12-30"), "Capricorn");

getSign("2018-10-08") should return "Libra".

js
assert.equal(getSign("2018-10-08"), "Libra");

getSign("1958-05-04") should return "Taurus".

js
assert.equal(getSign("1958-05-04"), "Taurus");

--seed--

--seed-contents--

js
function getSign(dateStr) {

  return dateStr;
}

--solutions--

js
function getSign(dateStr) {
  const [, monthStr, dayStr] = dateStr.split("-");
  const month = Number(monthStr);
  const day = Number(dayStr);

  if ((month === 3 && day >= 21) || (month === 4 && day <= 19)) return "Aries";
  if ((month === 4 && day >= 20) || (month === 5 && day <= 20)) return "Taurus";
  if ((month === 5 && day >= 21) || (month === 6 && day <= 20)) return "Gemini";
  if ((month === 6 && day >= 21) || (month === 7 && day <= 22)) return "Cancer";
  if ((month === 7 && day >= 23) || (month === 8 && day <= 22)) return "Leo";
  if ((month === 8 && day >= 23) || (month === 9 && day <= 22)) return "Virgo";
  if ((month === 9 && day >= 23) || (month === 10 && day <= 22)) return "Libra";
  if ((month === 10 && day >= 23) || (month === 11 && day <= 21)) return "Scorpio";
  if ((month === 11 && day >= 22) || (month === 12 && day <= 21)) return "Sagittarius";
  if ((month === 12 && day >= 22) || (month === 1 && day <= 19)) return "Capricorn";
  if ((month === 1 && day >= 20) || (month === 2 && day <= 18)) return "Aquarius";
  if ((month === 2 && day >= 19) || (month === 3 && day <= 20)) return "Pisces";
}