2020

Relative

<aside> ⚠️ Change uppercase W to lowercase w if your weeks start on Sunday.

</aside>

(formatDate(now(), "WY") == formatDate(prop("Date"), "WY")) ? "This Week" : ((format(toNumber(formatDate(now(), "W")) - 1) + formatDate(prop("Date"), "Y") == formatDate(prop("Date"), "WY")) ? "Last Week" : ((format(toNumber(formatDate(now(), "W")) + 1) + formatDate(prop("Date"), "Y") == formatDate(prop("Date"), "WY")) ? "Next Week" : (and(now() > prop("Date"), formatDate(now(), "ll") != formatDate(prop("Date"), "ll")) ? "Past" : ((dateBetween(prop("Date"), now(), "weeks") < 5) ? ("+" + format(dateBetween(prop("Date"), now(), "weeks")) + " weeks") : "Later"))))

(formatDate(now(), "WY") == formatDate(prop("Date"), "WY"))

Checks to see if the current date's Week/Year format matches that of Date's Week/Year format.

? "This Week"

If it does, display This Week

: ((format(toNumber(formatDate(now(), "W")) - 1) + formatDate(prop("Date"), "Y") == formatDate(prop("Date"), "WY"))

Otherwise check to see if the current date's Week/Year format minus one week matches that of Date's Week/Year format.

? "Last Week"

If it does, display Last Week

: ((format(toNumber(formatDate(now(), "W")) + 1) + formatDate(prop("Date"), "Y") == formatDate(prop("Date"), "WY"))

Otherwise check to see if the current date's Week/Year format plus one week matches that of Date's Week/Year format.

? "Next Week"

If it does, display Next Week

: (and(now() > prop("Date"), formatDate(now(), "ll") != formatDate(prop("Date"), "ll"))

Otherwise check to see if both the current date is greater than Date and the current date's DD/MM/YYYY format does not match Date's DD/MM/YYYY format.

? "Past"

If both return true, display Past

((dateBetween(prop("Date"), now(), "weeks") < 5)

Otherwise check to see if the number of weeks between the current date and Date is less than 5.

? ("+" + format(dateBetween(prop("Date"), now(), "weeks")) + " weeks")

If the number of weeks is less than 5, add one week and display +# weeks

: "Later"))))

Otherwise display Later

+ Overdue

(formatDate(now(), "WY") == formatDate(prop("Date"), "WY")) ? "This Week" : ((format(toNumber(formatDate(now(), "W")) + 1) + formatDate(prop("Date"), "Y") == formatDate(prop("Date"), "WY")) ? "Next Week" : (and(now() > prop("Date"), formatDate(now(), "ll") != formatDate(prop("Date"), "ll")) ? "Overdue" : ((dateBetween(prop("Date"), now(), "weeks") < 5) ? ("+" + format(dateBetween(prop("Date"), now(), "weeks")) + " weeks") : "Later")))

Original

if(year(prop("Date")) < year(now()), "Overdue", if(year(prop("Date")) > year(now()), if(toNumber(formatDate(prop("Date"), "W")) == toNumber(formatDate(now(), "W")), "This week", if(toNumber(formatDate(prop("Date"), "W")) + 52 - toNumber(formatDate(now(), "W")) == 1, "Next week", if(toNumber(formatDate(prop("Date"), "W")) + 52 - toNumber(formatDate(now(), "W")) == 2, "2 weeks", if(toNumber(formatDate(prop("Date"), "W")) + 52 - toNumber(formatDate(now(), "W")) == 3, "3 weeks", if(toNumber(formatDate(prop("Date"), "W")) + 52 - toNumber(formatDate(now(), "W")) == 4, "4 weeks", if(toNumber(formatDate(prop("Date"), "W")) + 52 - toNumber(formatDate(now(), "W")) >= 5, "Later", "")))))), if(toNumber(formatDate(prop("Date"), "W")) < toNumber(formatDate(now(), "W")), "Overdue", if(toNumber(formatDate(prop("Date"), "W")) == toNumber(formatDate(now(), "W")), "This week", if(toNumber(formatDate(prop("Date"), "W")) - toNumber(formatDate(now(), "W")) == 1, "Next week", if(toNumber(formatDate(prop("Date"), "W")) - toNumber(formatDate(now(), "W")) == 2, "2 weeks", if(toNumber(formatDate(prop("Date"), "W")) - toNumber(formatDate(now(), "W")) == 3, "3 weeks", if(toNumber(formatDate(prop("Date"), "W")) - toNumber(formatDate(now(), "W")) == 4, "4 weeks", if(toNumber(formatDate(prop("Date"), "W")) - toNumber(formatDate(now(), "W")) >= 5, "Later", "")))))))))