/** * formatters.js - Data formatting utilities * * This module contains utility functions for formatting time, durations, and other data. */ /** * Format time to GMT+4 timezone (Asia/Dubai) * This timezone is used consistently throughout the application: * - PostgreSQL database is set to Asia/Dubai timezone (UTC+4) * - Backend uses UTC internally but stores in Asia/Dubai in database * - All displayed times on frontend use this timezone for consistency * * @param {string} dateTimeStr - ISO date-time string * @returns {string} Formatted time string in GMT+4 */ export function formatTimeToGMT4(dateTimeStr) { if (!dateTimeStr) return 'N/A'; try { const date = new Date(dateTimeStr); // Format the time using the Etc/GMT-4 timezone, which represents GMT+4. // The locale 'en-US' or 'en-GB' can be used for formatting conventions like AM/PM. return date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', hour12: true, timeZone: 'Etc/GMT-4' }) + ' (GMT+4)'; } catch (error) { console.error("Error formatting time to GMT+4:", error, "Input:", dateTimeStr); return 'Invalid Date'; // Or return N/A or the original string } } /** * Convert decimal hours to hours and minutes format * @param {number} decimalHours - Hours in decimal format * @returns {string} Formatted duration string */ export function formatDurationHours(decimalHours) { if (decimalHours === null || decimalHours === undefined) return 'N/A'; const hours = Math.floor(decimalHours); const minutes = Math.round((decimalHours - hours) * 60); if (hours === 0) { return `${minutes} min`; } else if (minutes === 0) { return `${hours} hr`; } else { return `${hours} hr ${minutes} min`; } }