fix format date locale

This commit is contained in:
puriphatt 2024-06-27 04:59:11 +00:00
parent 3882678e9f
commit 6795453795

View file

@ -1,7 +1,8 @@
import 'moment/dist/locale/th';
import moment from 'moment';
import 'moment/dist/locale/th';
import 'moment/dist/locale/en-gb';
moment.locale('th');
moment.locale('en-gb');
export function setLocale(locale: string) {
moment.locale(locale);
@ -11,12 +12,67 @@ export function dateFormat(
date?: string | Date | null,
fullmonth = false,
time = false,
number = false,
) {
const m = moment(date);
if (!m.isValid()) return '';
const month = m.format(fullmonth ? 'MMMM' : 'MMM');
let yearOffset = 0;
if (moment.locale() === 'th') {
yearOffset = 543;
}
return m.format(`DD ${month} YYYY ${time ? ' HH:mm' : ''}`);
if (time) return m.format('HH:mm');
if (number) {
let formattedNumberDate = m.format('L');
if (yearOffset) {
const adjustedYear = m.year() + yearOffset;
formattedNumberDate = formattedNumberDate.replace(
m.year().toString(),
adjustedYear.toString(),
);
}
return formattedNumberDate;
}
const monthFormat = fullmonth ? 'MMMM' : 'MMM';
const formattedDate = m.format(
`DD ${monthFormat} YYYY ${time ? ' HH:mm' : ''}`,
);
// Adjust year for Buddhist calendar if locale is 'th'
if (yearOffset) {
const adjustedYear = m.year() + yearOffset;
return formattedDate.replace(m.year().toString(), adjustedYear.toString());
}
return formattedDate;
}
function pad(n: number) {
return `${Math.floor(Math.abs(n))}`.padStart(2, '0');
}
function getTimezoneOffset(date: Date) {
const tzOffset = -date.getTimezoneOffset();
const diff = tzOffset >= 0 ? '+' : '-';
return diff + pad(tzOffset / 60) + ':' + pad(tzOffset % 60);
}
export function toISOStringWithTimezone(date: Date) {
return (
date.getFullYear() +
'-' +
pad(date.getMonth() + 1) +
'-' +
pad(date.getDate()) +
'T' +
pad(date.getHours()) +
':' +
pad(date.getMinutes()) +
':' +
pad(date.getSeconds()) +
getTimezoneOffset(date)
);
}