@MH3 - please see this article on creating a date table in M, and optionally making it dynamic so it moves with your dates.
Unfortunately you will not be able to use many of the M Date.* functions as they rely on a calendar year. You'll need to create custom calculations to get the data you want. FOr example, your Q1 is May 1 through July 31. You could use something like:
= Table.AddColumn(#"Changed Type", "Quarter",
each let varDate = Date.Month([Date])
in
(if varDate >=5 and varDate <=7 then 1 else
if varDate >=8 and varDate <=10 then 2 else
if (varDate >=11 and varDate <=12) or varDate = 1 then 3 else
4), Int64.Type)
That will return your quarter numbers properly - May-Jul Q1, Aug-Oct Q2, Nov-Jan Q3, Feb-Apr Q4.
You are going to have issues with Time Intelligence in DAX as well as it relies on either a calendar year or fiscal quarters that end in March, June, September, and December. Matt Allington has an excellent chapter on how to do this in his Super Charge Power BI book. A brief overview is here.
Here is my full M code you can paste into a blank query in Power Query to see the dates and quarters as done above. The Date* functions like Month Name and Day Name will work just fine. Just not the ones that automatically calculate things like quarter number, day in year, week in year, etc.
let
Source = {Number.From(#date(2020,5,1))..Number.From(#date(2021,4,30))},
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), {"Date"}, null, ExtraValues.Error),
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Date", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Quarter",
each let varDate = Date.Month([Date])
in
(if varDate >=5 and varDate <=7 then 1 else
if varDate >=8 and varDate <=10 then 2 else
if (varDate >=11 and varDate <=12) or varDate = 1 then 3 else
4), Int64.Type),
#"Inserted Month Name" = Table.AddColumn(#"Added Custom", "Month Name", each Date.MonthName([Date]), type text),
#"Inserted Days in Month" = Table.AddColumn(#"Inserted Month Name", "Days in Month", each Date.DaysInMonth([Date]), Int64.Type),
#"Inserted Day Name" = Table.AddColumn(#"Inserted Days in Month", "Day Name", each Date.DayOfWeekName([Date]), type text)
in
#"Inserted Day Name"