Last Friday of each month: Difference between revisions

Content added Content deleted
(→‎{{header|Wren}}: Oops, wrong import.)
(Changed algorithm to work with version 1.4 of Nim.)
Line 2,502: Line 2,502:


=={{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] = [3, 4, 5, 6, 0, 1, 2]
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 == dFri:
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])
Sample usage:
echo date.format("yyyy-MM-dd")</lang>
<pre>./lastfriday 2012

{{out}}
Sample usage: ./lastfriday 2012
<pre>
2012-01-27
2012-01-27
2012-02-24
2012-02-24