diff --git a/inventory/src/components/chat/ChatRoom.tsx b/inventory/src/components/chat/ChatRoom.tsx index 9f1f2a9..33821f9 100644 --- a/inventory/src/components/chat/ChatRoom.tsx +++ b/inventory/src/components/chat/ChatRoom.tsx @@ -216,14 +216,42 @@ export function ChatRoom({ roomId, selectedUserId }: ChatRoomProps) { }; const formatTime = (timestamp: string) => { - const date = new Date(timestamp); + // The stored timestamps are actually in Eastern Time but labeled as UTC + // We need to compensate by treating them as UTC and then converting back to Eastern + const originalDate = new Date(timestamp); + + // Subtract 4 hours to compensate for the EDT offset (adjust to 5 hours for EST months) + // This assumes the original data was incorrectly stored as UTC when it was actually EDT/EST + const isDST = (date: Date) => { + const jan = new Date(date.getFullYear(), 0, 1); + const jul = new Date(date.getFullYear(), 6, 1); + return date.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); + }; + + // Determine if the timestamp falls in DST period for Eastern Time + const offsetHours = isDST(originalDate) ? 4 : 5; // EDT = UTC-4, EST = UTC-5 + const correctedDate = new Date(originalDate.getTime() - (offsetHours * 60 * 60 * 1000)); + const now = new Date(); - const isToday = date.toDateString() === now.toDateString(); + const timeZone = 'America/New_York'; + + // Compare dates in Eastern Time to ensure correct "today" detection + const dateInET = correctedDate.toLocaleDateString([], { timeZone }); + const nowInET = now.toLocaleDateString([], { timeZone }); + const isToday = dateInET === nowInET; if (isToday) { - return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); + return correctedDate.toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit', + timeZone + }); } else { - return date.toLocaleDateString() + ' ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); + return correctedDate.toLocaleDateString([], { timeZone }) + ' ' + correctedDate.toLocaleTimeString([], { + hour: '2-digit', + minute: '2-digit', + timeZone + }); } };