MCPcopy
hub / github.com/iamkun/dayjs / startOf

Method startOf

src/index.js:146–188  ·  view source on GitHub ↗
(units, startOf)

Source from the content-addressed store, hash-verified

144 }
145
146 startOf(units, startOf) { // startOf -> endOf
147 const isStartOf = !Utils.u(startOf) ? startOf : true
148 const unit = Utils.p(units)
149 const instanceFactory = (d, m) => {
150 const ins = Utils.w(this.$u ?
151 Date.UTC(this.$y, m, d) : new Date(this.$y, m, d), this)
152 return isStartOf ? ins : ins.endOf(C.D)
153 }
154 const instanceFactorySet = (method, slice) => {
155 const argumentStart = [0, 0, 0, 0]
156 const argumentEnd = [23, 59, 59, 999]
157 return Utils.w(this.toDate()[method].apply( // eslint-disable-line prefer-spread
158 this.toDate('s'),
159 (isStartOf ? argumentStart : argumentEnd).slice(slice)
160 ), this)
161 }
162 const { $W, $M, $D } = this
163 const utcPad = `set${this.$u ? 'UTC' : ''}`
164 switch (unit) {
165 case C.Y:
166 return isStartOf ? instanceFactory(1, 0) :
167 instanceFactory(31, 11)
168 case C.M:
169 return isStartOf ? instanceFactory(1, $M) :
170 instanceFactory(0, $M + 1)
171 case C.W: {
172 const weekStart = this.$locale().weekStart || 0
173 const gap = ($W < weekStart ? $W + 7 : $W) - weekStart
174 return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M)
175 }
176 case C.D:
177 case C.DATE:
178 return instanceFactorySet(`${utcPad}Hours`, 0)
179 case C.H:
180 return instanceFactorySet(`${utcPad}Minutes`, 1)
181 case C.MIN:
182 return instanceFactorySet(`${utcPad}Seconds`, 2)
183 case C.S:
184 return instanceFactorySet(`${utcPad}Milliseconds`, 3)
185 default:
186 return this.clone()
187 }
188 }
189
190 endOf(arg) {
191 return this.startOf(arg, false)

Callers 3

isSameMethod · 0.95
isAfterMethod · 0.95
endOfMethod · 0.95

Calls 2

$localeMethod · 0.95
cloneMethod · 0.95

Tested by

no test coverage detected