UNPKG

helpers-utils

Version:

Utility methods commonly used for writing helper libraries.

158 lines (144 loc) 4.54 kB
var Dates = {}; Dates.padNumber = function (num, count, padCharacter) { if (typeof padCharacter === 'undefined') { padCharacter = '0'; } var lenDiff = count - String(num).length; var padding = ''; if (lenDiff > 0) { while (lenDiff--) { padding += padCharacter; } } return padding + num; }; Dates.dayOfYear = function (date) { var oneJan = new Date(date.getFullYear(), 0, 1); return Math.ceil((date - oneJan) / 86400000); }; Dates.weekOfYear = function (date) { var oneJan = new Date(date.getFullYear(), 0, 1); return Math.ceil((((date - oneJan) / 86400000) + oneJan.getDay() + 1) / 7); }; Dates.isoWeekOfYear = function (date) { var target = new Date(date.valueOf()); var dayNr = (date.getDay() + 6) % 7; target.setDate(target.getDate() - dayNr + 3); var jan4 = new Date(target.getFullYear(), 0, 4); var dayDiff = (target - jan4) / 86400000; return 1 + Math.ceil(dayDiff / 7); }; Dates.tweleveHour = function (date) { if (date.getHours() > 12) { return date.getHours() - 12; } else { return date.getHours(); } }; Dates.timeZoneOffset = function (date) { var hoursDiff = -date.getTimezoneOffset() / 60; var result = Dates.padNumber(Math.abs(hoursDiff), 4); return (hoursDiff > 0 ? '+' : '-') + result; }; Dates.format = function (date, format) { return format.replace(Dates.formats, function (match, p) { switch (p) { case 'a': return Dates.abbreviatedWeekdays[date.getDay()]; case 'A': return Dates.fullWeekdays[date.getDay()]; case 'b': return Dates.abbreviatedMonths[date.getMonth()]; case 'B': return Dates.fullMonths[date.getMonth()]; case 'c': return date.toLocaleString(); case 'C': return Math.round(date.getFullYear() / 100); case 'd': return Dates.padNumber(date.getDate(), 2); case 'D': return Dates.format(date, '%m/%d/%y'); case 'e': return Dates.padNumber(date.getDate(), 2, ' '); case 'F': return Dates.format(date, '%Y-%m-%d'); case 'h': return Dates.format(date, '%b'); case 'H': return Dates.padNumber(date.getHours(), 2); case 'I': return Dates.padNumber(Dates.tweleveHour(date), 2); case 'j': return Dates.padNumber(Dates.dayOfYear(date), 3); case 'k': return Dates.padNumber(date.getHours(), 2, ' '); case 'l': return Dates.padNumber(Dates.tweleveHour(date), 2, ' '); case 'L': return Dates.padNumber(date.getMilliseconds(), 3); case 'm': return Dates.padNumber(date.getMonth() + 1, 2); case 'M': return Dates.padNumber(date.getMinutes(), 2); case 'n': return '\n'; case 'p': if (date.getHours() > 11) { return 'PM'; } else { return 'AM'; } break; case 'P': return Dates.format(date, '%p').toLowerCase(); case 'r': return Dates.format(date, '%I:%M:%S %p'); case 'R': return Dates.format(date, '%H:%M'); case 's': return date.getTime() / 1000; case 'S': return Dates.padNumber(date.getSeconds(), 2); case 't': return '\t'; case 'T': return Dates.format(date, '%H:%M:%S'); case 'u': if (date.getDay() === 0) { return 7; } else { return date.getDay(); } break; case 'U': return Dates.padNumber(Dates.weekOfYear(date), 2); case 'v': return Dates.format(date, '%e-%b-%Y'); case 'V': return Dates.padNumber(Dates.isoWeekOfYear(date), 2); case 'W': return Dates.padNumber(Dates.weekOfYear(date), 2); case 'w': return Dates.padNumber(date.getDay(), 2); case 'x': return date.toLocaleDateString(); case 'X': return date.toLocaleTimeString(); case 'y': return String(date.getFullYear()).substring(2); case 'Y': return date.getFullYear(); case 'z': return Dates.timeZoneOffset(date); default: return match; } }); }; Dates.formats = /%(a|A|b|B|c|C|d|D|e|F|h|H|I|j|k|l|L|m|M|n|p|P|r|R|s|S|t|T|u|U|v|V|W|w|x|X|y|Y|z)/g; Dates.abbreviatedWeekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat']; Dates.fullWeekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; Dates.abbreviatedMonths = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; Dates.fullMonths = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; export { Dates };