UNPKG

@gameroom/cli

Version:

A command line tool for Gameroom

64 lines (63 loc) 1.74 kB
const PERIOD_START = 1598763600000 // Aug 30, 2020 const DAYS = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ] // static methods Date.beginningOfDay = (d) => { d = d ? new Date(d) : new Date() d.setHours(0,0,0,0) return d } Date.beginningOfYesterday = (d) => { d = d ? new Date(d) : new Date() d.setHours(0,0,0,0) d.addDays(-1) return d } Date.beginningOfWeek = (d) => { d = d ? new Date(d) : new Date() const day = d.getDay() const diff = d.getDate() - day + (day === 0 ? -7 : 0) const result = new Date(d.setDate(diff)) result.setHours(0,0,0,0) return result } Date.endOfWeek = (d) => { d = d ? new Date(d) : new Date() if (d.getDay()) d = Date.beginningOfWeek(d) return d.addDays(7) } Date.beginningOfPeriod = (d) => { d = d ? new Date(d) : new Date() d.setHours(0,0,0,0) d.setDate(d.getDate() - d.getDay()) // Sunday let period = new Date(PERIOD_START) while (period <= d) period.addDays(14) while (period > d) period.addDays(-14) return period } Date.endOfPeriod = (d) => { d = d ? new Date(d) : new Date() let period = Date.beginningOfPeriod(d) while (period <= d) period.addDays(14) return period } Date.beginningOfMonth = (d) => { d = d ? new Date(d) : new Date() return new Date(d.getFullYear(), d.getMonth(), 1) } Date.fromSeconds = (s) => new Date(s * 1000) // instance methods Date.prototype.addHours = function (d) { this.setHours(this.setHours() + d) return this } Date.prototype.addDays = function (d) { this.setDate(this.getDate() + d) return this } Date.prototype.withDays = function (d) { const date = new Date(this) return date.addDays(d) } Date.prototype.getDayOfWeek = function () { return DAYS[this.getDay()] }