UNPKG

glize

Version:

Glize is a clean and robust pure JavaScript library.

64 lines (57 loc) 1.91 kB
/** * @fileoverview Date utility methods. * * @see https://google.github.io/styleguide/javascriptguide.xml * @see https://developers.google.com/closure/compiler/docs/js-for-compiler * @module glize/utils/date * @suppress {misplacedTypeAnnotation} */ import { convert as toAmPmTime } from 'midday'; export { /** * Converts 24-hour time string to 12-hour time string. * @param {string} time The time string ("00:30", "01:45", "12:00", "22:15"). * @return {string} Return converted 24-hour time string to 12-hour time. * @method * @example * toAmPmTime('00:30'); // 12:30 AM * toAmPmTime('01:15'); // 1:15 AM * toAmPmTime('11:45'); // 11:45 AM * toAmPmTime('12:15'); // 12:15 PM * toAmPmTime('13:15'); // 1:15 PM * toAmPmTime('23:15'); // 11:15 PM */ toAmPmTime }; /** * Gets week date. * @param {!Date=} date The optional date object. * @return {string} Returns week date in ISO 8601 format. * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates * @see https://en.wikipedia.org/wiki/ISO_week_date * @method * @example * var weekDate = getWeekDate(new Date(2015, 9, 26)); * var expected = '2015-W44'; * weekDate === expected; */ export const getWeekDate = (date = new Date()) => { const number = getWeekNumber(date); const week = ('0' + number).slice(-2); return date.getFullYear() + '-W' + week; }; /** * Gets week number. * @param {!Date=} date The optional date object. * @return {number} Returns week number. * @method * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates * @see https://en.wikipedia.org/wiki/ISO_week_date */ export const getWeekNumber = (date = new Date()) => { date.setHours(0, 0, 0, 0); date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7); const jan4 = new Date(date.getFullYear(), 0, 4); const diff = date - jan4; return 1 + Math.round((diff / 864e5 - 3 + (jan4.getDay() + 6) % 7) / 7); };