mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-03 05:32:06 -05:00
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
const DEFAULT_LOCALE = "en-US";
|
|
|
|
const DEFAULT_DATE_DISPLAY_OPTIONS: Intl.DateTimeFormatOptions = {
|
|
year: "numeric",
|
|
month: "short",
|
|
day: "numeric",
|
|
};
|
|
|
|
const DEFAULT_DATE_TIME_DISPLAY_OPTIONS: Intl.DateTimeFormatOptions = {
|
|
year: "numeric",
|
|
month: "long",
|
|
day: "numeric",
|
|
hour: "numeric",
|
|
minute: "2-digit",
|
|
};
|
|
|
|
// Helper function to calculate difference in days between two dates
|
|
export const diffInDays = (date1: Date, date2: Date) => {
|
|
const diffTime = Math.abs(date2.getTime() - date1.getTime());
|
|
return Math.floor(diffTime / (1000 * 60 * 60 * 24));
|
|
};
|
|
|
|
export const formatDateForDisplay = (
|
|
date: Date,
|
|
locale: string = DEFAULT_LOCALE,
|
|
options: Intl.DateTimeFormatOptions = DEFAULT_DATE_DISPLAY_OPTIONS
|
|
): string => {
|
|
return new Intl.DateTimeFormat(locale, options).format(date);
|
|
};
|
|
|
|
export const formatDateTimeForDisplay = (
|
|
date: Date,
|
|
locale: string = DEFAULT_LOCALE,
|
|
options: Intl.DateTimeFormatOptions = DEFAULT_DATE_TIME_DISPLAY_OPTIONS
|
|
): string => {
|
|
return new Intl.DateTimeFormat(locale, options).format(date);
|
|
};
|
|
|
|
export const formatDateWithOrdinal = (date: Date, locale: string = DEFAULT_LOCALE): string => {
|
|
return formatDateForDisplay(date, locale, {
|
|
weekday: "long",
|
|
year: "numeric",
|
|
month: "long",
|
|
day: "numeric",
|
|
});
|
|
};
|
|
|
|
export const isValidDateString = (value: string) => {
|
|
const regex = /^(?:\d{4}-\d{1,2}-\d{1,2}|\d{1,2}-\d{1,2}-\d{4})$/;
|
|
|
|
if (!regex.test(value)) {
|
|
return false;
|
|
}
|
|
|
|
const normalizedValue = /^\d{1,2}-\d{1,2}-\d{4}$/.test(value)
|
|
? value.replace(/(\d{1,2})-(\d{1,2})-(\d{4})/, "$3-$2-$1")
|
|
: value;
|
|
|
|
const date = new Date(normalizedValue);
|
|
return !Number.isNaN(date.getTime());
|
|
};
|
|
|
|
export const getFormattedDateTimeString = (date: Date): string => {
|
|
const options: Intl.DateTimeFormatOptions = {
|
|
year: "numeric",
|
|
month: "2-digit",
|
|
day: "2-digit",
|
|
hour: "2-digit",
|
|
minute: "2-digit",
|
|
second: "2-digit",
|
|
hourCycle: "h23",
|
|
};
|
|
|
|
return new Intl.DateTimeFormat("en-CA", options).format(date).replace(",", "");
|
|
};
|