CRBT-Team/Purplet

View on GitHub
packages/utils/src/format/snowflake.ts

Summary

Maintainability
A
0 mins
Test Coverage
import type { Snowflake } from 'discord-api-types/globals';

export const DISCORD_EPOCH = 1420070400000;

export function snowflakeToDate(snowflake: bigint | Snowflake, epoch = DISCORD_EPOCH) {
  const ms = BigInt(snowflake) >> 22n;
  return new Date(Number(ms) + epoch);
}

export function dateToSnowflake(date: Date, epoch = DISCORD_EPOCH): Snowflake {
  const ms = BigInt(date.getTime() - epoch);
  return (ms << 22n).toString();
}

export type { Snowflake };