Files
formbricks-formbricks/packages/lib/time.ts

107 lines
2.2 KiB
TypeScript

import { formatDistance } from "date-fns";
import intlFormat from "date-fns/intlFormat";
export const convertDateString = (dateString: string) => {
if (!dateString) {
return dateString;
}
const date = new Date(dateString);
return intlFormat(
date,
{
year: "numeric",
month: "long",
day: "numeric",
},
{
locale: "en",
}
);
};
export const convertDateTimeString = (dateString: string) => {
if (!dateString) {
return dateString;
}
const date = new Date(dateString);
return intlFormat(
date,
{
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
hour: "numeric",
minute: "2-digit",
},
{
locale: "en",
}
);
};
export const convertDateTimeStringShort = (dateString: string) => {
if (!dateString) {
return dateString;
}
const date = new Date(dateString);
return intlFormat(
date,
{
year: "numeric",
month: "long",
day: "numeric",
hour: "numeric",
minute: "2-digit",
},
{
locale: "en",
}
);
};
export const convertTimeString = (dateString: string) => {
const date = new Date(dateString);
return intlFormat(
date,
{
hour: "numeric",
minute: "2-digit",
second: "2-digit",
},
{
locale: "en",
}
);
};
export const timeSince = (dateString: string) => {
const date = new Date(dateString);
return formatDistance(date, new Date(), {
addSuffix: true,
});
};
export const timeSinceConditionally = (dateString: string) => {
return new Date().getTime() - new Date(dateString).getTime() > 14 * 24 * 60 * 60 * 1000
? convertDateTimeStringShort(dateString)
: timeSince(dateString);
};
export const getTodaysDateFormatted = (seperator: string) => {
const date = new Date();
const formattedDate = date.toISOString().split("T")[0].split("-").join(seperator);
return formattedDate;
};
export function convertDatesInObject(obj: any) {
for (let key in obj) {
if ((key === "createdAt" || key === "updatedAt") && !isNaN(Date.parse(obj[key]))) {
obj[key] = new Date(obj[key]);
} else if (typeof obj[key] === "object" && obj[key] !== null) {
convertDatesInObject(obj[key]);
}
}
}