Skip to content
This repository was archived by the owner on Feb 12, 2020. It is now read-only.

Commit a49530a

Browse files
committed
Added option for a startOfWeek that starts on Monday. Issue# melvitax#74
1 parent 9100475 commit a49530a

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

Playground.playground/Contents.swift

+3
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,9 @@ now.adjust(hour: 12, minute: 0, second: 0)
206206
now.dateFor(.startOfDay)
207207
now.dateFor(.endOfDay)
208208
now.dateFor(.startOfWeek)
209+
var calendar = Calendar(identifier: .gregorian)
210+
calendar.firstWeekday = 2
211+
now.dateFor(.startOfWeek, calendar: calendar)
209212
now.dateFor(.endOfWeek)
210213
now.dateFor(.startOfMonth)
211214
now.dateFor(.endOfMonth)

README.md

+7
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ let startOfWeek = date.dateFor(.startOfWeek)
4848
let nearest5Hours = date.dateFor(.nearestHour(hour:5))
4949
```
5050

51+
Forcing a week to start on monday
52+
```Swift
53+
var calendar = Calendar(identifier: .gregorian)
54+
calendar = 2 // sets the week to start on the second day.. monday
55+
now.dateFor(.startOfWeek, calendar: calendar)
56+
```
57+
5158
Time since...
5259

5360
```Swift

Sources/DateHelper.swift

+2-3
Original file line numberDiff line numberDiff line change
@@ -362,15 +362,14 @@ public extension Date {
362362

363363
// MARK: Date for...
364364

365-
func dateFor(_ type:DateForType) -> Date {
365+
func dateFor(_ type:DateForType, calendar:Calendar = Calendar.current) -> Date {
366366
switch type {
367367
case .startOfDay:
368368
return adjust(hour: 0, minute: 0, second: 0)
369369
case .endOfDay:
370370
return adjust(hour: 23, minute: 59, second: 59)
371371
case .startOfWeek:
372-
let offset = component(.weekday)!-1
373-
return adjust(.day, offset: -(offset))
372+
return calendar.date(from: calendar.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self))!
374373
case .endOfWeek:
375374
let offset = 7 - component(.weekday)!
376375
return adjust(.day, offset: offset)

0 commit comments

Comments
 (0)