krishnadhulipalla's picture
pulsemap 1.2
71c1c9d
raw
history blame contribute delete
932 Bytes
export function haversineMiles(a: [number, number], b: [number, number]) {
const toRad = (x: number) => (x * Math.PI) / 180;
const R = 3958.7613; // Earth radius in miles
const dLat = toRad(b[0] - a[0]);
const dLon = toRad(b[1] - a[1]);
const lat1 = toRad(a[0]);
const lat2 = toRad(b[0]);
const sinDLat = Math.sin(dLat / 2);
const sinDLon = Math.sin(dLon / 2);
const h =
sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon;
const c = 2 * Math.atan2(Math.sqrt(h), Math.sqrt(1 - h));
return R * c;
}
export function timeAgo(iso: string, now: Date = new Date()) {
const t = new Date(iso);
const s = Math.max(0, Math.floor((now.getTime() - t.getTime()) / 1000));
if (s < 60) return `${s}s ago`;
const m = Math.floor(s / 60);
if (m < 60) return `${m}m ago`;
const h = Math.floor(m / 60);
if (h < 24) return `${h}h ago`;
const d = Math.floor(h / 24);
return `${d}d ago`;
}