Day of the week of Christmas and New Year
- Task
Determine programatically and show on this page on what weekday Christmas Day, 2021 and New Year's Day, 2022 will fall or did fall.
Python
<lang python> iimport datetime
weekDays = ("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday") thisXMas = datetime.date(2021,12,25) thisXMasDay = thisXMas.weekday() thisXMasDayAsString = weekDays[thisXMasDay] print("This year's Christmas is on a {}".format(thisXMasDayAsString))
nextNewYear = datetime.date(2022,1,1) nextNewYearDay = nextNewYear.weekday() nextNewYearDayAsString = weekDays[nextNewYearDay+1] print("Next new year is on a {}".format(nextNewYearDayAsString)) </lang>
- Output:
This year's Christmas is on a Saturday Next new year is on a Sunday
Raku
<lang perl6>my @d-o-w = < Sunday Monday Tuesday Wednesday Thursday Friday Saturday >;
.say for (flat 2020..2022, (1500 .. 2500).roll(7)).sort.map: {
"In {$_}, New Years is on a { @d-o-w[Date.new($_, 1, 1).day-of-week % 7] }, " ~ "and Christmas on a { @d-o-w[Date.new($_, 12, 25).day-of-week % 7] }."
}</lang>
- Sample output:
In 1578, New Years is on a Sunday, and Christmas on a Monday. In 1590, New Years is on a Monday, and Christmas on a Tuesday. In 1642, New Years is on a Wednesday, and Christmas on a Thursday. In 1957, New Years is on a Tuesday, and Christmas on a Wednesday. In 2020, New Years is on a Wednesday, and Christmas on a Friday. In 2021, New Years is on a Friday, and Christmas on a Saturday. In 2022, New Years is on a Saturday, and Christmas on a Sunday. In 2242, New Years is on a Saturday, and Christmas on a Sunday. In 2245, New Years is on a Wednesday, and Christmas on a Thursday. In 2393, New Years is on a Friday, and Christmas on a Saturday.
Wren
This uses the same years as the Raku example.
The actual days for 1578 may have been different as the Gregorian calendar didn't start until 1582. <lang ecmascript>import "./date" for Date
var years = [1578, 1590, 1642, 1957, 2020, 2021, 2022, 2242, 2245, 2393] for (year in years) {
var newYear = Date.new(year, 1, 1).weekDay var xmas = Date.new(year, 12, 25).weekDay System.print("In %(year), New year's day is on a %(newYear), and Christmas day on %(xmas).")
}</lang>
- Output:
In 1578, New year's day is on a Sunday, and Christmas day on Monday. In 1590, New year's day is on a Monday, and Christmas day on Tuesday. In 1642, New year's day is on a Wednesday, and Christmas day on Thursday. In 1957, New year's day is on a Tuesday, and Christmas day on Wednesday. In 2020, New year's day is on a Wednesday, and Christmas day on Friday. In 2021, New year's day is on a Friday, and Christmas day on Saturday. In 2022, New year's day is on a Saturday, and Christmas day on Sunday. In 2242, New year's day is on a Saturday, and Christmas day on Sunday. In 2245, New year's day is on a Wednesday, and Christmas day on Thursday. In 2393, New year's day is on a Friday, and Christmas day on Saturday.