Find the last Sunday of each month: Difference between revisions

Content added Content deleted
(→‎{{header|UNIX Shell}}: Add implementation)
(Rewritten as now use of temporary invalid dates is forbidden.)
Line 2,823: Line 2,823:


=={{header|Nim}}==
=={{header|Nim}}==
<lang nim>import times, os, strutils
<lang nim>import os, strutils, times


const
var timeinfo = getLocalTime getTime()
DaysInMonth: array[Month, int] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
timeinfo.year = paramStr(1).parseInt
DayDiffs: array[WeekDay, int] = [1, 2, 3, 4, 5, 6, 0]
for month in mJan .. mDec:

timeinfo.month = month
let year = paramStr(1).parseInt
for day in countdown(31, 1):

timeinfo.monthday = day
for month in mJan..mDec:
let t = getLocalTime(timeInfoToTime timeinfo)
var lastDay = DaysInMonth[month]
if t.month == month and t.weekday == dSun:
if month == mFeb and year.isLeapYear: lastDay = 29
echo t.format "yyyy-MM-dd"
var date = initDateTime(lastDay, month, year, 0, 0, 0)
break</lang>
date = date - days(DayDiffs[date.weekday])
echo date.format("yyyy-MM-dd")</lang>
Sample usage:
Sample usage:
<pre>./lastsunday 2013
<pre>./lastsunday 2013