Skip to content
This repository has been archived by the owner on Mar 27, 2024. It is now read-only.

Commit

Permalink
Add getWeek helper
Browse files Browse the repository at this point in the history
  • Loading branch information
mobily committed Feb 2, 2020
1 parent 44feed5 commit 4b8aeb5
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
- [x] `endOfWeek`
- [x] `isSameWeek`
- [x] `lastDayOfWeek`
- [ ] `getWeek`
- [x] `getWeek`
- [x] `getWeekOfMonth`
- [x] `getWeeksInMonth`
- [ ] `setWeek`
Expand Down
20 changes: 20 additions & 0 deletions __tests__/getWeek_test.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
open Jest;

open Js.Date;

describe("getWeek", () => {
open ExpectJs;

test("returns the local week of year of the given date", () => {
let date = makeWithYMD(~year=2020., ~month=0., ~date=5., ());

date |> ReDate.getWeek |> expect |> toEqual(2.);
});

test("allows to specify which day is the first day of the week", () => {
let date = makeWithYMD(~year=2020., ~month=0., ~date=5., ());
let getWeek' = ReDate.getWeek(~weekStartsOn=Monday);

date |> getWeek' |> expect |> toEqual(1.);
});
});
19 changes: 19 additions & 0 deletions docs/week.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,3 +184,22 @@ let getWeeksInMonth' = ReDate.getWeeksInMonth(~weekStartsOn=Friday);
date |> getWeeksInMonth';
```

#### getWeek

> Get the local week index of the given date.
`let getWeek: (~weekStartsOn: day=?, Js.Date.t) => float`

```reason
let date = Js.Date.makeWithYMD(~year=2018., ~month=10., ~date=1., ());
date |> ReDate.getWeek;
```

```reason
let date = Js.Date.makeWithYMD(~year=2018., ~month=10., ~date=14., ());
let getWeek' = ReDate.getWeek(~weekStartsOn=Monday);
date |> getWeek';
```
10 changes: 10 additions & 0 deletions src/ReDate.re
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,16 @@ let getWeeksInMonth = (~weekStartsOn=Sunday, date) => {
);
};

let getWeek = (~weekStartsOn=Sunday, date) => {
let diff =
Js.Date.(
(date |> Internal.startOfWeek(~weekStartsOn) |> getTime)
-. (date |> Internal.startOfWeekYear(~weekStartsOn) |> getTime)
);

Js.Math.round(diff /. (Milliseconds.week |> float_of_int)) +. 1.;
};

/* β€”β€”[Weekday helpers]β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” */

let isSunday = Internal.is(Sunday);
Expand Down
2 changes: 2 additions & 0 deletions src/ReDate.rei
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ let getWeekOfMonth: (~weekStartsOn: day=?, Js.Date.t) => float;

let getWeeksInMonth: (~weekStartsOn: day=?, Js.Date.t) => int;

let getWeek: (~weekStartsOn: day=?, Js.Date.t) => float;

/* β€”β€”[Weekday helpers]β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” */

let isSunday: Js.Date.t => bool;
Expand Down

0 comments on commit 4b8aeb5

Please sign in to comment.