Skip to content

fix(dateUtils): use local timezone in toDateStr to fix streak date bug for UTC+ users#1674

Merged
Priyanshu-byte-coder merged 1 commit into
Priyanshu-byte-coder:mainfrom
Anubrata023:main
May 31, 2026
Merged

fix(dateUtils): use local timezone in toDateStr to fix streak date bug for UTC+ users#1674
Priyanshu-byte-coder merged 1 commit into
Priyanshu-byte-coder:mainfrom
Anubrata023:main

Conversation

@Anubrata023
Copy link
Copy Markdown
Contributor

@Anubrata023 Anubrata023 commented May 30, 2026

Summary

Replace toISOString().slice(0,10) with getFullYear/getMonth/getDate so that commits made early morning in timezones ahead of UTC (IST, JST, AEDT, etc.) are logged on the correct local calendar date instead of the previous UTC date, which was breaking valid streaks.

gssoc26

Closes #928


Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Refactor / code cleanup

Testing

  • [✅] Verified fix applies correctly to all call sites

  • [✅] No TypeScript errors

  • [✅] Indentation consistent with codebase (2-space)

  • [✅] No other files modified

Accessibility Checklist

No UI changes in this PR — purely a data/logic fix

Root Cause

In src/lib/dateUtils.ts, the toDateStr function was using Date.toISOString() which always outputs a UTC date string. For users in timezones significantly ahead of UTC (e.g., IST +5:30, JST +9:00, AEDT +11:00), a commit made between midnight and their UTC offset would be logged as the previous day, silently breaking an otherwise valid streak.

Before (broken):

export function toDateStr(d: Date): string {
  return d.toISOString().slice(0, 10); // Always UTC — wrong for IST/JST/AEDT users
}

-----------------

> **After Fixed**

export function toDateStr(d: Date): string {
  const year = d.getFullYear();
  const month = String(d.getMonth() + 1).padStart(2, "0");
  const day = String(d.getDate()).padStart(2, "0");
  return `${year}-${month}-${day}`; // Local wall-clock date — matches GitHub's display
}
--

---
*

Replace toISOString().slice(0,10) with getFullYear/getMonth/getDate
so that commits made early morning in timezones ahead of UTC (IST, JST,
AEDT, etc.) are logged on the correct local calendar date instead of
the previous UTC date, which was breaking valid streaks.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 30, 2026

@Anubrata023 is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:bug GSSoC type bonus: bug fix type:testing GSSoC type bonus: tests (+10 pts) labels May 30, 2026
@github-actions
Copy link
Copy Markdown

GSSoC Label Checklist 🏷️

@Priyanshu-byte-coder — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your first PR on DevTrack! 🎉

A maintainer will review it within 48 hours. While you wait:

  • Make sure CI is passing (type-check + lint)
  • Double-check the PR description is filled out and the issue is linked
  • Feel free to ask questions in Discussions if you need help

If you find DevTrack useful, a ⭐ star on the repo is always appreciated — it helps the project grow and attract more contributors!

@Priyanshu-byte-coder Priyanshu-byte-coder added gssoc:approved GSSoC: PR approved for scoring level1 GSSoC Level 1 - Beginner (10 points) labels May 31, 2026
@Priyanshu-byte-coder Priyanshu-byte-coder merged commit 32e9f0f into Priyanshu-byte-coder:main May 31, 2026
4 checks passed
@github-actions
Copy link
Copy Markdown

🎉 Merged! Thanks for contributing to DevTrack.

If the project has been useful to you, a ⭐ star on the repo is the easiest way to support it — it helps DevTrack get discovered by more developers.

Keep an eye on open issues for your next contribution!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc:approved GSSoC: PR approved for scoring gssoc26 GSSoC 2026 contribution level1 GSSoC Level 1 - Beginner (10 points) type:bug GSSoC type bonus: bug fix type:testing GSSoC type bonus: tests (+10 pts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] : toDateStr uses UTC instead of local time, causing incorrect streak and contribution counts for eastern timezones

2 participants