Packages

Date formatter extension for birl

Current section

Files

Jump to
dateformat src dateformat@internal@day.erl
Raw

src/dateformat@internal@day.erl

-module(dateformat@internal@day).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([to_day_of_week/2, to_iso_week_of_year/1, to_weekday_string/1, to_weekday_short_string/1, to_weekday_shorter_string/1, to_day_of_year/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-file("src/dateformat/internal/day.gleam", 7).
?DOC(false).
-spec to_day_of_week(birl:time(), boolean()) -> integer().
to_day_of_week(Time, Iso) ->
case {birl:weekday(Time), Iso} of
{mon, _} ->
1;
{tue, _} ->
2;
{wed, _} ->
3;
{thu, _} ->
4;
{fri, _} ->
5;
{sat, _} ->
6;
{sun, false} ->
0;
{sun, true} ->
7
end.
-file("src/dateformat/internal/day.gleam", 34).
?DOC(false).
-spec to_iso_week_of_year(birl:time()) -> integer().
to_iso_week_of_year(T) ->
Day_num = (to_day_of_week(T, false) + 6) rem 7,
Day = birl:get_day(T),
T@1 = birl:set_day(
T,
begin
_record = Day,
{day,
erlang:element(2, _record),
erlang:element(3, _record),
(erlang:element(4, Day) - Day_num) + 3}
end
),
First_thursday = birl:to_unix_micro(T@1),
T@2 = birl:set_day(
T@1,
begin
_record@1 = birl:get_day(T@1),
{day, erlang:element(2, _record@1), 1, 1}
end
),
T@3 = case to_day_of_week(T@2, false) of
4 ->
T@2;
D ->
birl:set_day(
T@2,
begin
_record@2 = birl:get_day(T@2),
{day,
erlang:element(2, _record@2),
1,
1 + (((4 - D) + 7) rem 7)}
end
)
end,
1 + erlang:trunc(
math:ceil(
erlang:float(First_thursday - birl:to_unix_micro(T@3)) / 604800000000.0
)
).
-file("src/dateformat/internal/day.gleam", 55).
?DOC(false).
-spec to_weekday_string(birl:time()) -> binary().
to_weekday_string(Time) ->
case birl:weekday(Time) of
mon ->
<<"Monday"/utf8>>;
tue ->
<<"Tuesday"/utf8>>;
wed ->
<<"Wednesday"/utf8>>;
thu ->
<<"Thursday"/utf8>>;
fri ->
<<"Friday"/utf8>>;
sat ->
<<"Saturday"/utf8>>;
sun ->
<<"Sunday"/utf8>>
end.
-file("src/dateformat/internal/day.gleam", 67).
?DOC(false).
-spec to_weekday_short_string(birl:time()) -> binary().
to_weekday_short_string(Time) ->
case birl:weekday(Time) of
mon ->
<<"Mon"/utf8>>;
tue ->
<<"Tue"/utf8>>;
wed ->
<<"Wed"/utf8>>;
thu ->
<<"Thu"/utf8>>;
fri ->
<<"Fri"/utf8>>;
sat ->
<<"Sat"/utf8>>;
sun ->
<<"Sun"/utf8>>
end.
-file("src/dateformat/internal/day.gleam", 79).
?DOC(false).
-spec to_weekday_shorter_string(birl:time()) -> binary().
to_weekday_shorter_string(Time) ->
case birl:weekday(Time) of
mon ->
<<"Mo"/utf8>>;
tue ->
<<"Tu"/utf8>>;
wed ->
<<"We"/utf8>>;
thu ->
<<"Th"/utf8>>;
fri ->
<<"Fr"/utf8>>;
sat ->
<<"Sa"/utf8>>;
sun ->
<<"Su"/utf8>>
end.
-file("src/dateformat/internal/day.gleam", 20).
?DOC(false).
-spec to_day_of_year(birl:time()) -> integer().
to_day_of_year(T2) ->
Time = {time_of_day, 0, 0, 0, 0},
T2@1 = begin
_pipe = T2,
birl:set_time_of_day(_pipe, Time)
end,
Day = begin
_pipe@1 = T2@1,
birl:get_day(_pipe@1)
end,
T1 = begin
_pipe@2 = T2@1,
_pipe@3 = birl:set_day(_pipe@2, {day, erlang:element(2, Day), 1, 1}),
birl:set_time_of_day(_pipe@3, Time)
end,
Duration_micro = begin
_pipe@4 = T2@1,
birl:to_unix_micro(_pipe@4)
end
- begin
_pipe@5 = T1,
birl:to_unix_micro(_pipe@5)
end,
1 + (case 86400000000 of
0 -> 0;
Gleam@denominator -> Duration_micro div Gleam@denominator
end).