/** * Checks if a given date is valid. * * @param {number|string|Date} date - The date to be checked. * @returns {boolean} True if the date is valid, false otherwise. * * @example * // returns true * isValidDate(new Date()); * * @example * // returns false * isValidDate('invalid date'); */ export function isValidDate(date) { return date && !isNaN(new Date(date).getTime()); } /** * Converts a given date to a specific format. * * @param {number|string|Date} date - The date to be formatted. * @param {Object} opts - Optional parameters to customize the output format. * @returns {string} The formatted date as a string in 'dd/mm/yyyy' format. If the provided date is not valid, an empty string is returned. * * @example * // returns "02/12/2022" * toDateFormat(new Date(2022, 11, 2)); */ export function toDateFormat(date, locale = 'es-ES', opts = {}) { if (!isValidDate(date)) return ''; const format = Object.assign( { year: 'numeric', month: '2-digit', day: '2-digit' }, opts ); return new Date(date).toLocaleDateString(locale, format); } /** * Converts a given date to a specific time format. * * @param {number|string|Date} date - The date to be formatted. * @param {boolean} [showSeconds=false] - Whether to include seconds in the output format. * @returns {string} The formatted time as a string in 'hh:mm:ss' format. If the provided date is not valid, an empty string is returned. If showSeconds is false, seconds are not included in the output format. * * @example * // returns "00:00" * toTimeFormat(new Date(2022, 11, 2)); * * @example * // returns "00:00:00" * toTimeFormat(new Date(2022, 11, 2), true); */ export function toTimeFormat(date, showSeconds = false) { if (!isValidDate(date)) { return ''; } return new Date(date).toLocaleTimeString('es-ES', { hour: '2-digit', minute: '2-digit', second: showSeconds ? '2-digit' : undefined, }); } /** * Converts a given date to a specific date and time format. * * @param {number|string|Date} date - The date to be formatted. * @param {boolean} [showSeconds=false] - Whether to include seconds in the output format. * @returns {string} The formatted date as a string in 'dd/mm/yyyy, hh:mm:ss' format. If the provided date is not valid, an empty string is returned. If showSeconds is false, seconds are not included in the output format. * * @example * // returns "02/12/2022, 00:00" * toDateTimeFormat(new Date(2022, 11, 2)); * * @example * // returns "02/12/2022, 00:00:00" * toDateTimeFormat(new Date(2022, 11, 2), true); */ export function toDateTimeFormat(date, showSeconds = false) { if (!isValidDate(date)) { return ''; } return new Date(date).toLocaleDateString('es-ES', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: showSeconds ? '2-digit' : undefined, }); } /** * Converts seconds to a formatted string representing hours and minutes (hh:mm). * @param {number} seconds - The number of seconds to convert. * @param {boolean} includeHSuffix - Optional parameter indicating whether to include "h." after the hour. * @returns {string} A string representing the time in the format "hh:mm" with optional "h." suffix. */ export function secondsToHoursMinutes(seconds, includeHSuffix = true) { if (!seconds) return includeHSuffix ? '00:00 h.' : '00:00'; const hours = Math.floor(seconds / 3600); const remainingMinutes = seconds % 3600; const minutes = Math.floor(remainingMinutes / 60); const formattedHours = hours < 10 ? '0' + hours : hours; const formattedMinutes = minutes < 10 ? '0' + minutes : minutes; // Append "h." if includeHSuffix is true const suffix = includeHSuffix ? ' h.' : ''; // Return formatted string return formattedHours + ':' + formattedMinutes + suffix; } export function getTimeDifferenceWithToday(date) { let today = Date.vnNew(); today.setHours(0, 0, 0, 0); date = new Date(date); date.setHours(0, 0, 0, 0); return today - date; } export function isLower(date) { return getTimeDifferenceWithToday(date) > 0; } export function isBigger(date) { return getTimeDifferenceWithToday(date) < 0; }