Day of the week of Christmas and New Year: Difference between revisions

From Rosetta Code
Content added Content deleted
(→‎{{header|Wren}}: Revised in line with Raku example.)
(added Phix, removed a "+1" from the Python entry)
Line 4: Line 4:
<br>
<br>
Determine programatically and show on this page on what weekday Christmas Day, 2021 and New Year's Day, 2022 will fall or did fall.
Determine programatically and show on this page on what weekday Christmas Day, 2021 and New Year's Day, 2022 will fall or did fall.
=={{header|Phix}}==
<!--<lang Phix>(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">include</span> <span style="color: #004080;">timedate</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
<span style="color: #008080;">procedure</span> <span style="color: #000000;">nyc</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">year</span><span style="color: #0000FF;">)</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">ny</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">format_timedate</span><span style="color: #0000FF;">({</span><span style="color: #000000;">year</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">},</span><span style="color: #008000;">"Dddd"</span><span style="color: #0000FF;">),</span>
<span style="color: #000000;">cd</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">format_timedate</span><span style="color: #0000FF;">({</span><span style="color: #000000;">year</span><span style="color: #0000FF;">,</span><span style="color: #000000;">12</span><span style="color: #0000FF;">,</span><span style="color: #000000;">25</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">},</span><span style="color: #008000;">"Dddd"</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"In %d, New year's day is on a %s, and Christmas day on a %s.\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">year</span><span style="color: #0000FF;">,</span><span style="color: #000000;">ny</span><span style="color: #0000FF;">,</span><span style="color: #000000;">cd</span><span style="color: #0000FF;">})</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #7060A8;">papply</span><span style="color: #0000FF;">({</span><span style="color: #000000;">1578</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1590</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1642</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1957</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2020</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2021</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2022</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2242</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2245</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">2393</span><span style="color: #0000FF;">},</span><span style="color: #000000;">nyc</span><span style="color: #0000FF;">)</span>
<!--</lang>-->
<small>Note the builtin timedate type does not officially support dates prior to ''1752''... the fact that the first three lines agree with other entries on this page is pure luck.</small>
{{out}}
<pre>
In 1578, New year's day is on a Sunday, and Christmas day on a Monday.
In 1590, New year's day is on a Monday, and Christmas day on a Tuesday.
In 1642, New year's day is on a Wednesday, and Christmas day on a Thursday.
In 1957, New year's day is on a Tuesday, and Christmas day on a Wednesday.
In 2020, New year's day is on a Wednesday, and Christmas day on a Friday.
In 2021, New year's day is on a Friday, and Christmas day on a Saturday.
In 2022, New year's day is on a Saturday, and Christmas day on a Sunday.
In 2242, New year's day is on a Saturday, and Christmas day on a Sunday.
In 2245, New year's day is on a Wednesday, and Christmas day on a Thursday.
In 2393, New year's day is on a Friday, and Christmas day on a Saturday.
</pre>

=={{header|Python}}==
=={{header|Python}}==
<lang python>
<lang python>
Line 16: Line 42:
nextNewYear = datetime.date(2022,1,1)
nextNewYear = datetime.date(2022,1,1)
nextNewYearDay = nextNewYear.weekday()
nextNewYearDay = nextNewYear.weekday()
nextNewYearDayAsString = weekDays[nextNewYearDay+1]
nextNewYearDayAsString = weekDays[nextNewYearDay]
print("Next new year is on a {}".format(nextNewYearDayAsString))
print("Next new year is on a {}".format(nextNewYearDayAsString))
</lang>
</lang>
Line 22: Line 48:
<pre>
<pre>
This year's Christmas is on a Saturday
This year's Christmas is on a Saturday
Next new year is on a Sunday
Next new year is on a Saturday
</pre>
</pre>



Revision as of 17:01, 24 November 2021

Day of the week of Christmas and New Year is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
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.

Phix

with javascript_semantics
include timedate.e
procedure nyc(integer year)
    string ny = format_timedate({year,1,1,0,0,0},"Dddd"),
           cd = format_timedate({year,12,25,0,0,0},"Dddd")
    printf(1,"In %d, New year's day is on a %s, and Christmas day on a %s.\n",{year,ny,cd})
end procedure
papply({1578, 1590, 1642, 1957, 2020, 2021, 2022, 2242, 2245, 2393},nyc)

Note the builtin timedate type does not officially support dates prior to 1752... the fact that the first three lines agree with other entries on this page is pure luck.

Output:
In 1578, New year's day is on a Sunday, and Christmas day on a Monday.
In 1590, New year's day is on a Monday, and Christmas day on a Tuesday.
In 1642, New year's day is on a Wednesday, and Christmas day on a Thursday.
In 1957, New year's day is on a Tuesday, and Christmas day on a Wednesday.
In 2020, New year's day is on a Wednesday, and Christmas day on a Friday.
In 2021, New year's day is on a Friday, and Christmas day on a Saturday.
In 2022, New year's day is on a Saturday, and Christmas day on a Sunday.
In 2242, New year's day is on a Saturday, and Christmas day on a Sunday.
In 2245, New year's day is on a Wednesday, and Christmas day on a Thursday.
In 2393, New year's day is on a Friday, and Christmas day on a Saturday.

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] 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 Saturday

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

Library: Wren-date

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.