in web/frontend/src/app/shared/locale.timezone.ts [294:393]
export function formatHDate(
data: string,
filter_date_format?: string[],
filter_time_format?: string[],
filter_timezone?: any[],
gridFormat = false,
nanoTime = '',
showNanoSeconds = false,
periodicity = 0
) {
if (!data) {
return null;
}
// UTC
/* let date = toUtc(data);
if (filter_timezone && filter_timezone.length) {
date = toUtc(hdDateTZ(date, filter_timezone[0].name));
}*/
// Locale time
let date = new HdDate(nanoTime || data);
const nanoSeconds = date.getNanosFraction();
if (filter_timezone && filter_timezone.length) {
// data is in UTC format, but HdDate creates a Date object with the local timezone
const newDate = new HdDate(data);
// Date object must be displayed according to the selected timezone
const offset = newDate.getTimezoneOffset() + filter_timezone[0].offset;
newDate.setMilliseconds(newDate.getMilliseconds() + offset * 60 * 1000);
newDate.setNanoseconds(nanoSeconds);
date = newDate;
}
let date_format = localeFormat;
let time_format = 'HH:mm:ss fff';
if (filter_date_format && filter_date_format.length) {
date_format = filter_date_format[0];
}
if (filter_time_format && filter_time_format.length) {
time_format = filter_time_format[0];
}
const initialDate = new HdDate(date.getTime() - periodicity);
if (periodicity) {
if (periodicity >= 31104e6) { // year
return `${date.getFullYear()}`;
} else if (periodicity >= 7776e6) { // quarter
const dateInsidePeriodicity = new HdDate(date.getTime() - 2592e6);
const month = dateInsidePeriodicity.getMonth();
const year = dateInsidePeriodicity.getFullYear();
switch (month) {
case 0:
case 1:
case 2:
return `I ${year}`;
case 3:
case 4:
case 5:
return `II ${year}`;
case 6:
case 7:
case 8:
return `III ${year}`;
case 9:
case 10:
case 11:
return `IV ${year}`;
}
} else if (periodicity >= 2592e6) { // months
return `${months[date.getMonth()]} ${date.getFullYear()}`;
} else if (periodicity >= 864e5) { // days&weeks
return initialDate.toLocaleFormat(date_format);
} else if (periodicity >= 6e4) { // hours, minutes
return `${initialDate.toLocaleFormat(date_format)}
${formatOneDigitNumber(initialDate.getHours())}:${formatOneDigitNumber(initialDate.getMinutes())} -
${formatOneDigitNumber(date.getHours())}:${formatOneDigitNumber(date.getMinutes())}`;
} else { // seconds
return `${initialDate.toLocaleFormat(date_format)}
${formatOneDigitNumber(initialDate.getHours())}:${formatOneDigitNumber(initialDate.getMinutes())}:${formatOneDigitNumber(initialDate.getSeconds())}
- ${formatOneDigitNumber(date.getHours())}:${formatOneDigitNumber(date.getMinutes())}:${formatOneDigitNumber(date.getSeconds())}`;
}
}
let dateAsString = date.toLocaleFormat(date_format) + ' ' + date.toLocaleFormat(time_format);
if (!showNanoSeconds && time_format.includes('ffffff')) {
const splitDate = dateAsString.split('.');
const milliseconds = splitDate.pop();
let filteredSeconds = milliseconds.slice(0, 3);
for (let i = 3; i < milliseconds.length; i++) {
if (milliseconds[i] !== '0') {
filteredSeconds += milliseconds[i];
}
}
dateAsString = `${splitDate.join('')}.${filteredSeconds}`;
}
return dateAsString;
}