UNPKG

pig-dam-core

Version:

Library that should be included in every Pig DAM project we build

86 lines (85 loc) 2.19 kB
"use strict"; /** * Date: 3/24/18 * Time: 3:40 AM * @license MIT (see project's LICENSE file) * */ Object.defineProperty(exports, "__esModule", { value: true }); exports.dateToISOString = exports.dateFromValue = exports.dateFromString = exports.datesAreEqual = exports.dateAdd = void 0; const _ = require("lodash"); /** * Offsets <param>data</param> */ function dateAdd(date, { days = 0, hours = 0, millis = 0, minutes = 0, seconds = 0 }) { const offset = millis + seconds * 1000 + minutes * 1000 * 60 + hours * 1000 * 60 * 60 + days * 1000 * 60 * 60 * 24; return new Date(date.getTime() + offset); } exports.dateAdd = dateAdd; /** * Safely compares dates */ function datesAreEqual(date1, date2) { if (date1 === date2) { return true; } else if (date1 && date2) { return date1.getTime() === date2.getTime(); } else { return false; } } exports.datesAreEqual = datesAreEqual; /** * Does all he can to convert a string into a date object * @throws {Error} */ function dateFromString(text) { let result; if (text != null) { result = Date.parse(text); if (isNaN(result) === false) { result = new Date(result); } else { throw new Error(`invalid date ${text}`); } } return result; } exports.dateFromString = dateFromString; /** * Looks for the various known flavors of a date: Date, String, Number (assumes epoch) * @throws {Error} */ function dateFromValue(value) { if (value == null) { return undefined; } else if (typeof value === "string") { return dateFromString(value); } else if (typeof value === "number") { return new Date(value); } else if (_.isDate(value)) { return value; } throw new Error(`unknown date value ${value}`); } exports.dateFromValue = dateFromValue; /** * Allows support for older encodings without millis */ function dateToISOString(date, millis = true) { const result = date.toISOString(); return (millis) ? result : result.replace(/\.\d+Z$/, "Z"); } exports.dateToISOString = dateToISOString;