UNPKG

@bigfishtv/cockpit

Version:

82 lines (69 loc) 2.81 kB
/** * Time Utilities * @module Utilities/timeUtils */ import moment from 'moment'; var cleanDateFormat = 'MMM Do, YYYY h:mm a'; export function extractDateAndTime(dateTime) { var splitDate = dateTimeRegex.exec(dateTime); return [splitDate[1], splitDate[2]]; } /** * Takes datetime string and returns humanized time e.g. 7 days ago, 3 minutes ago * @param {String} dateTime * @return {string} - returns humanized time string */ export function fromNow(dateTime) { if (!moment(dateTime).isValid()) return ''; return moment(dateTime).fromNow(); } /** * Same as fromNow but limited to days * @param {String} dateTime * @return {String} - returns humanized time string */ export function daysFromNow(dateTime) { if (!moment(dateTime).isValid()) return ''; return moment().diff(moment(dateTime), 'days'); } /** * Checks if time is in range * @param {String|MomentType} startTime * @param {String|MomentType} endTime * @param {String|MomentType} currentTime * @return {Boolean} */ export function inTimeRange(startTime, endTime) { var currentTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; if (!currentTime) currentTime = moment();else if (typeof currentTime == 'string') currentTime = moment(currentTime); if (!startTime && !endTime) return true; if (startTime && !endTime) return moment(startTime).isBefore(currentTime); if (!startTime && endTime) return moment(endTime).isAfter(currentTime); if (startTime && endTime) return moment(startTime).isBefore(currentTime) && moment(endTime).isAfter(currentTime); } /** * Takes arbitrary dateTime string and returns it formatted a specific way * @param {String} dateTime * @param {String} momentFormat * @return {string} */ export function formatDate(dateTime) { var momentFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : cleanDateFormat; if (!moment(dateTime).isValid()) return dateTime; return moment(dateTime).format(momentFormat); } /** * Takes a start and end datetime string (and optional format string) and returns a formatted date range string * @param {String} start datetime format start * @param {String} end datetime format end * @param {String} format format string (default = 'MMMM Do, h:mm a') * @return {String} */ export function getTimeRange(start, end) { var momentFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : cleanDateFormat; var startMoment = moment(start); var endMoment = moment(end); if (!startMoment.isValid() || !endMoment.isValid()) return null; var sameDate = startMoment.format('MMMM Do YYYY') === endMoment.format('MMMM Do YYYY'); return startMoment.format(momentFormat) + ' - ' + (sameDate ? endMoment.format('h:mm a') : endMoment.format(momentFormat)); }