parseDate.js

/**
 * Few ways to parse a date object.
 * @since 0.0.5
 * @param {date} [date=new Date()] Date object
 * @param {string} [sep='/'] Separator
 * @param {boolean} [time=true] Include time or not
 * @param {boolean} [hour12=false] 12 hour clock or 24
 * @param {boolean} [reverse=false] reverse DDMMYYY to YYYYMMDD or not 
 * @throws Error if ***date*** is not a date object
 * @returns {string} Year, month and day separated by ***sep*** 
 *                   and optionally time in HH:MM:SS format, 12 or 24 hours
 * @example
 * parseDate(undefined, '-'); // returns current date formatted with - and current time,
 * e.g. 13-09-2018, 14:04:23
 * @example
 * const date = new Date(2012, 12, 28, 23, 59, 59)
 * parseDate(date, undefined, undefined, true, true);
 * // returns 2012/12/28, 11:59:59 PM
 */
function parseDate(date = new Date(), sep = '/', time = true, hour12 = false, reverse = false) {
  if (!(date instanceof Date)) throw new TypeError('Date must be valid Date object!');
  const month = date.getMonth() + 1;
  const day = date.getDate();
  const parsedTime = time
    ? `, ${date.toLocaleTimeString('de', { hour12 })}`
    : '';
  const reversed = reverse
    ? date.getFullYear() + sep + (month < 10 ? `0${month}` : month) + sep + (day < 10 ? `0${day}` : day)
    : (day < 10 ? `0${day}` : day) + sep + (month < 10 ? `0${month}` : month) + sep + date.getFullYear();
  return reversed + parsedTime;
}

module.exports = parseDate;