UNPKG

ok-tools

Version:

My personal JS tools and utilities

151 lines 5.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.relativeTime = void 0; var languages_enum_1 = require("./languages.enum"); var time_constants_1 = require("./time-constants"); var pluralize_1 = require("./pluralize"); var parse_time_1 = require("./parse-time"); function relativeTime(input, language, now) { if (language === void 0) { language = languages_enum_1.Languages.CZECH; } if (now === void 0) { now = null; } var date = parse_time_1.parseTime(input); if (!date) { return ''; } var thatTime = date.getTime(); if (!now) { now = new Date(); } var diff = now.getTime() - thatTime; // Budoucí datum - asi jen omylem, zaokrouhlíme na 0 if (diff < 0 && diff > -100) { diff = 0; } // Future dates support if (diff < 0) { if (diff > -5000) { return time_constants_1.Words.now[language]; } if (diff > -60000) { return time_constants_1.Words.momentLater[language]; } if (diff > -3600000) { var minutes = -1 * Math.round(diff / 60000); return pluralize_1.pluralize(minutes, time_constants_1.Words.minutesLater[language]); } if (diff > -3600000 * 5) { var hours = -1 * Math.round(diff / (3600 * 1000)); return pluralize_1.pluralize(hours, time_constants_1.Words.hoursLater[language]); } if (diff > -3600 * 1000 * 23) { var tomorrow = ''; if (date.getDay() === now.getDay() + 1 || (now.getDay() === 6 && date.getDay() === 0)) { tomorrow = time_constants_1.Words.tomorrowAt[language] + ' '; } else { tomorrow = time_constants_1.Words.todayAt[language] + ' '; } return tomorrow + formatTimeOfDay(date); } // tento rok if (now.getFullYear() === date.getFullYear()) { if (language === languages_enum_1.Languages.CZECH) { // @ts-ignore return (date.getDate()) + '. ' + time_constants_1.Months.namesGenitive[language][date.getMonth() + 1]; } else { // @ts-ignore return time_constants_1.Months.names[language][date.getMonth() + 1] + ' ' + (date.getDate()); } } // ještě později if (language === languages_enum_1.Languages.CZECH) { // @ts-ignore return (date.getDate()) + '. ' + time_constants_1.Months.namesGenitive[language][date.getMonth() + 1] + ' ' + (date.getFullYear()); } else { // @ts-ignore return time_constants_1.Months.names[language][date.getMonth() + 1] + ' ' + (date.getDate()) + ', ' + (date.getFullYear()); } } // Before now dates // Do 5 sekund if (diff < 5) { return time_constants_1.Words.now[language]; } // do 1 minuty if (diff < 60000) { return time_constants_1.Words.momentAgo[language]; } // do 1 hodiny if (diff < 3600000) { var minutes = Math.round(diff / 60000); return pluralize_1.pluralize(minutes, time_constants_1.Words.minutesAgo[language]); } // do 10 hodin if (diff < 3600 * 1000 * 10) { var hours = Math.round(diff / (3600 * 1000)); return pluralize_1.pluralize(hours, time_constants_1.Words.hoursAgo[language]); } // do 24 hodin if (diff < 3600 * 1000 * 24) { var yesterdayText = ''; if (date.getDay() === now.getDay() - 1) { yesterdayText = time_constants_1.Words.yesterdayAt[language] + ' '; } return yesterdayText + formatTimeOfDay(date); } // do 6 dnů if (diff < 3600 * 1000 * 24 * 6) { var yesterdayText = ''; if (date.getDay() === now.getDay() - 1) { yesterdayText = time_constants_1.Words.yesterdayAt[language] + ' '; } if (date.getDay() === 6 && now.getDay() === 0) { yesterdayText = time_constants_1.Words.yesterdayAt[language] + ' '; } if (!yesterdayText) { var dayInWeek = date.getDay(); // @ts-ignore yesterdayText = time_constants_1.Days.localAt[language][dayInWeek] + ' '; } return yesterdayText + formatTimeOfDay(date); } var yearStart = new Date(); yearStart.setTime(now.getTime()); yearStart.setDate(1); yearStart.setMonth(1); // tento rok if (yearStart.getFullYear() === date.getFullYear()) { if (language === languages_enum_1.Languages.CZECH) { // @ts-ignore return (date.getDate()) + '. ' + time_constants_1.Months.namesGenitive[language][date.getMonth() + 1]; } else { // @ts-ignore return time_constants_1.Months.names[language][date.getMonth() + 1] + ' ' + (date.getDate()); } } // ještě dříve if (language === languages_enum_1.Languages.CZECH) { // @ts-ignore return (date.getDate()) + '. ' + time_constants_1.Months.namesGenitive[language][date.getMonth() + 1] + ' ' + (date.getFullYear()); } else { // @ts-ignore return time_constants_1.Months.names[language][date.getMonth() + 1] + ' ' + (date.getDate()) + ', ' + (date.getFullYear()); } } exports.relativeTime = relativeTime; function formatTimeOfDay(date) { var m = (date.getMinutes()) + ''; if (m.length === 1) { m = '0' + m; } var h = (date.getHours()) + ''; // if (h.length === 1) { // h = '0' + h; // } return h + ':' + m; } //# sourceMappingURL=relative-time.js.map