UNPKG

@bigfishtv/cockpit

Version:

94 lines (78 loc) 3.54 kB
'use strict'; exports.__esModule = true; exports.extractDateAndTime = extractDateAndTime; exports.fromNow = fromNow; exports.daysFromNow = daysFromNow; exports.inTimeRange = inTimeRange; exports.formatDate = formatDate; exports.getTimeRange = getTimeRange; var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var cleanDateFormat = 'MMM Do, YYYY h:mm a'; /** * Time Utilities * @module Utilities/timeUtils */ 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 */ function fromNow(dateTime) { if (!(0, _moment2.default)(dateTime).isValid()) return ''; return (0, _moment2.default)(dateTime).fromNow(); } /** * Same as fromNow but limited to days * @param {String} dateTime * @return {String} - returns humanized time string */ function daysFromNow(dateTime) { if (!(0, _moment2.default)(dateTime).isValid()) return ''; return (0, _moment2.default)().diff((0, _moment2.default)(dateTime), 'days'); } /** * Checks if time is in range * @param {String|MomentType} startTime * @param {String|MomentType} endTime * @param {String|MomentType} currentTime * @return {Boolean} */ function inTimeRange(startTime, endTime) { var currentTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; if (!currentTime) currentTime = (0, _moment2.default)();else if (typeof currentTime == 'string') currentTime = (0, _moment2.default)(currentTime); if (!startTime && !endTime) return true; if (startTime && !endTime) return (0, _moment2.default)(startTime).isBefore(currentTime); if (!startTime && endTime) return (0, _moment2.default)(endTime).isAfter(currentTime); if (startTime && endTime) return (0, _moment2.default)(startTime).isBefore(currentTime) && (0, _moment2.default)(endTime).isAfter(currentTime); } /** * Takes arbitrary dateTime string and returns it formatted a specific way * @param {String} dateTime * @param {String} momentFormat * @return {string} */ function formatDate(dateTime) { var momentFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : cleanDateFormat; if (!(0, _moment2.default)(dateTime).isValid()) return dateTime; return (0, _moment2.default)(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} */ function getTimeRange(start, end) { var momentFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : cleanDateFormat; var startMoment = (0, _moment2.default)(start); var endMoment = (0, _moment2.default)(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)); }