fdu logo@pyyupsk/fdu - Faster Date-Time Utility
API ReferenceQuery

isYesterday()

Check if a date is yesterday. Ideal for recent activity displays, daily reports, and streak tracking applications.

Checks if this date is yesterday (the calendar day before today).

Syntax

.isYesterday(): boolean

Returns

boolean - True if the date is yesterday

Examples

Basic Usage

import { fdu } from "@pyyupsk/fdu";

// Assuming today is 2024-01-15
fdu("2024-01-14").isYesterday();          // true
fdu("2024-01-14T23:59:59").isYesterday(); // true (same day, different time)
fdu("2024-01-15").isYesterday();          // false (today)
fdu("2024-01-13").isYesterday();          // false (day before yesterday)

Recent Activity Display

function formatActivityTime(date: FduInstance): string {
  if (date.isToday()) {
    return `Today at ${date.format("h:mm A")}`;
  }
  if (date.isYesterday()) {
    return `Yesterday at ${date.format("h:mm A")}`;
  }
  return date.format("MMM D [at] h:mm A");
}

const lastLogin = fdu().subtract(1, "day");
formatActivityTime(lastLogin); // "Yesterday at 2:30 PM"

Daily Report Check

function needsDailyReport(lastReportDate: FduInstance | null): boolean {
  if (!lastReportDate) return true;

  // Report needed if last report was yesterday or earlier
  return lastReportDate.isYesterday() || lastReportDate.isBefore(fdu().subtract(1, "day"));
}

const lastReport = fdu().subtract(1, "day");
needsDailyReport(lastReport); // true (reported yesterday, need today's)

Streak Tracking

function checkStreak(activityDates: FduInstance[]): { current: number; broken: boolean } {
  if (activityDates.length === 0) {
    return { current: 0, broken: true };
  }

  // Sort by most recent first
  const sorted = [...activityDates].sort((a, b) => b.valueOf() - a.valueOf());
  const mostRecent = sorted[0];

  // Streak is broken if most recent activity wasn't today or yesterday
  const streakActive = mostRecent.isToday() || mostRecent.isYesterday();

  if (!streakActive) {
    return { current: 0, broken: true };
  }

  // Count consecutive days
  let streak = 1;
  for (let i = 1; i < sorted.length; i++) {
    const diff = sorted[i - 1].diff(sorted[i], "day");
    if (diff === 1) {
      streak++;
    } else {
      break;
    }
  }

  return { current: streak, broken: false };
}

Filter Yesterday's Events

const events = [
  { date: fdu().subtract(2, "day"), title: "Old Event" },
  { date: fdu().subtract(1, "day"), title: "Yesterday's Event" },
  { date: fdu(), title: "Today's Event" },
];

const yesterdaysEvents = events.filter((e) => e.date.isYesterday());
// [{ date: ..., title: "Yesterday's Event" }]

Relative Date Grouping

function groupByRelativeDate(items: Array<{ date: FduInstance; title: string }>) {
  return {
    yesterday: items.filter((i) => i.date.isYesterday()),
    today: items.filter((i) => i.date.isToday()),
    tomorrow: items.filter((i) => i.date.isTomorrow()),
    other: items.filter(
      (i) => !i.date.isYesterday() && !i.date.isToday() && !i.date.isTomorrow()
    ),
  };
}

See Also

On this page