Nertivia-Client/src/utils/date.js
2019-12-12 11:31:29 +00:00

86 lines
1.9 KiB
JavaScript

export default (miliseconds, type) => {
let friendlyDate = "";
const now = new Date();
const messageDate = new Date(miliseconds);
if (sameDay(now, messageDate)) {
friendlyDate = `Today at ${getFullTime(messageDate, type)}`;
} else if (yesterDay(now, messageDate)) {
friendlyDate = `Yesterday at ${getFullTime(messageDate, type)}`;
} else {
friendlyDate = getFullDateWithTime(messageDate, type);
}
return friendlyDate;
};
function sameDay(d1, d2) {
return (
d1.getFullYear() === d2.getFullYear() &&
d1.getMonth() === d2.getMonth() &&
d1.getDate() === d2.getDate()
);
}
function yesterDay(d1, d2) {
return (
d1.getFullYear() === d2.getFullYear() &&
d1.getMonth() === d2.getMonth() &&
d1.getDate() - d2.getDate() == 1
);
}
function getFullTime(date, type) {
if (type === "12h") {
return formatAMPM(date);
}
let finalTime = "";
let hours = date.getHours();
let minutes = date.getMinutes();
if (hours <= 9) {
finalTime = `0${hours}`;
} else {
finalTime = `${hours}`;
}
if (minutes <= 9) {
finalTime += `:0${minutes}`;
} else {
finalTime += `:${minutes}`;
}
return finalTime;
}
function getFullDateWithTime(date, type) {
const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
const months = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec"
];
const dayName = days[date.getDay()];
const monthName = months[date.getMonth()];
return `${dayName} ${date.getDate()} ${monthName} ${date.getFullYear()} at ${getFullTime(
date,
type
)}`;
}
function formatAMPM(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? "PM" : "AM";
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? "0" + minutes : minutes;
var strTime = hours + ":" + minutes + " " + ampm;
return strTime;
}