@gameroom/cli
Version:
A command line tool for Gameroom
64 lines (63 loc) • 1.74 kB
JavaScript
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()]
}