133 lines
4.1 KiB
JavaScript
133 lines
4.1 KiB
JavaScript
/**
|
|
* 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.
|
|
* @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') {
|
|
if (!isValidDate(date)) {
|
|
return '';
|
|
}
|
|
return new Date(date).toLocaleDateString(locale, {
|
|
year: 'numeric',
|
|
month: '2-digit',
|
|
day: '2-digit',
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 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;
|
|
}
|