@@ -18,6 +18,7 @@ defmodule Cldr.Calendar.Julian do
1818 @ new_year_starting_month start_month
1919 @ new_year_starting_day start_day
2020
21+ @ quarters_in_year 4
2122 @ months_in_year Cldr.Calendar.Julian . months_in_year ( 0 )
2223 @ last_month_of_year rem ( start_month + ( @ months_in_year - 1 ) , @ months_in_year )
2324
@@ -99,9 +100,29 @@ defmodule Cldr.Calendar.Julian do
99100 Date . range ( first , last , 1 )
100101 end
101102
102- # Returns the ordinal month
103- def month_of_year ( _year , ordinal_month , _day ) do
104- Cldr.Math . amod ( ordinal_month - @ new_year_starting_month + 1 , @ months_in_year )
103+ def quarter_of_year ( year , month , day ) do
104+ month_of_year = month_of_year ( year , month , day )
105+
106+ ceil ( month_of_year / ( @ months_in_year / @ quarters_in_year ) )
107+ end
108+
109+ # Returns the ordinal month accounting for a long month 12
110+ def month_of_year ( _year , month , day )
111+ when month == @ new_year_starting_month and day < @ new_year_starting_day do
112+ @ months_in_year
113+ end
114+
115+ def month_of_year ( _year , month , _day ) do
116+ Cldr.Math . amod ( month - @ new_year_starting_month + 1 , @ months_in_year )
117+ end
118+
119+ def day_of_year ( year , month , day ) do
120+ adjusted_year =
121+ if month < @ new_year_starting_month , do: year + 1 , else: year
122+
123+ first_day = date_to_iso_days ( year , @ new_year_starting_month , @ new_year_starting_day )
124+ this_day = date_to_iso_days ( adjusted_year , month , day )
125+ this_day - first_day + 1
105126 end
106127
107128 defdelegate valid_date? ( year , month , day ) , to: Cldr.Calendar.Julian
@@ -110,11 +131,9 @@ defmodule Cldr.Calendar.Julian do
110131 defdelegate week ( year , week ) , to: Cldr.Calendar.Julian
111132 defdelegate weeks_in_year ( year ) , to: Cldr.Calendar.Julian
112133 defdelegate day_of_week ( year , month , day , starts_on ) , to: Cldr.Calendar.Julian
113- defdelegate day_of_year ( year , month , day ) , to: Cldr.Calendar.Julian
114134 defdelegate day_of_era ( year , month , day ) , to: Cldr.Calendar.Julian
115135 defdelegate iso_week_of_year ( year , month , day ) , to: Cldr.Calendar.Julian
116136 defdelegate week_of_year ( year , month , day ) , to: Cldr.Calendar.Julian
117- defdelegate quarter_of_year ( year , month , day ) , to: Cldr.Calendar.Julian
118137 defdelegate year_of_era ( year ) , to: Cldr.Calendar.Julian
119138 defdelegate parse_date ( date ) , to: Cldr.Calendar.Julian
120139 defdelegate date_to_string ( year , month , day ) , to: Cldr.Calendar.Julian
0 commit comments