> Also, in your case, couldn't you support a custom starting_on value called > :iso_default or :monday, which will behave as you described?
In everything I do I try very hard to have a consistent implementation of the Calendar behaviour. I believe that in most cases a user or developer shouldn’t have to think about what calendar is in use - it’s just the right calendar producing the right results. So while I could implement a custom `starting_on`, that then sets my calendars apart from the default calendar and other peoples calendars. I really really really want to avoid that. Calendaring is hard enough as it is without developers having to differentiate between them in their code. > my concern with this PR is that it opens up the path for "duplicating" > several of the functions in the Date module I’m just a pragmatist and a bit gun shy to argue any point here. My only intent was to define a standard Elixir API where, for any given date in any complying calendar, I could know upon which day of the week that day falls. If I’m the only person who thinks that’s a reasonable expectation then there is no need to consider the proposal further. > On 11 Jan 2025, at 8:33 pm, José Valim <jose.va...@gmail.com> wrote: > > Hi Kip, my concern with this PR is that it opens up the path for > "duplicating" several of the functions in the Date module: > > Date.iso_beginning_of_month/1 > Date.iso_beginning_of_week/2 > Date.iso_day_of_era/1 > Date.iso_day_of_week/1 > Date.iso_day_of_year/1 > Date.iso_days_in_month/1 > Date.iso_end_of_month/1 > Date.iso_end_of_week/2 > Date.iso_months_in_year/1 > Date.iso_quarter_of_year/1 > Date.iso_year_of_era/1 > > Perhaps not all of the above but at least a few. > > Also, in your case, couldn't you support a custom starting_on value called > :iso_default or :monday, which will behave as you described? > > So your :default can adhere to your custom calendar semantics, and then > either :monday or :iso_default returns what the computation above would > provide. > > > José Valim > https://dashbit.co/ > > > On Sat, Jan 11, 2025 at 9:45 AM Kip <kipco...@gmail.com > <mailto:kipco...@gmail.com>> wrote: >> A recent discussion <https://github.com/elixir-lang/elixir/pull/14162> >> clarified that the return value from `Date.day_of_week/2` is an ordinal >> value. That is, when it returns "1" that means "first day of week". It >> specifically does not mean "1" is Monday. >> >> That means that it would be useful to have a function that does return the >> cardinal day of week - that is, a number where 1 == Monday and 7 == Sunday. >> >> The function would look something like: >> >> def iso_day_of_week(%{calendar: Calendar.ISO} = date) do >> day_of_week(date) >> end >> >> def iso_day_of_week(date) do >> date >> |> convert!(Calendar.ISO) >> |> day_of_week() >> end >> >> This implementation relies on the knowledge that when called with >> starting_on = :default (which is the default argument value) the returned >> value is indeed 1 == Monday, 7 == Sunday. >> >> If there is any consensus I'll submit a PR. >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "elixir-lang-core" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to elixir-lang-core+unsubscr...@googlegroups.com >> <mailto:elixir-lang-core+unsubscr...@googlegroups.com>. >> To view this discussion visit >> https://groups.google.com/d/msgid/elixir-lang-core/eeff3e35-448b-4dcf-ad4a-866bac76a819n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/elixir-lang-core/eeff3e35-448b-4dcf-ad4a-866bac76a819n%40googlegroups.com?utm_medium=email&utm_source=footer>. > > > -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to elixir-lang-core+unsubscr...@googlegroups.com > <mailto:elixir-lang-core+unsubscr...@googlegroups.com>. > To view this discussion visit > https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4K1Avrg-Ro_%3DWdNTtwOM9CV-oWPPbn2rprG%2B5en9XPwOA%40mail.gmail.com > > <https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4K1Avrg-Ro_%3DWdNTtwOM9CV-oWPPbn2rprG%2B5en9XPwOA%40mail.gmail.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/elixir-lang-core/B942BE1E-5FC3-4A0E-AE31-19267B436AD1%40gmail.com.