Posted to tcl by msiism at Mon Feb 08 22:22:48 GMT 2021view pretty
proc _days_in_month {year month} { ## Return the number of days in a given month of a given year set procname _days_in_month set days_per_month {31 28 31 30 31 30 31 31 30 31 30 31} set month_norm [scan $month %d] set year_norm [scan $year %d] if {$month_norm < 1 || $month_norm > 12} { error "$procname: invalid month number -- '$month'" } if {[clock scan ${year_norm}-${month_norm}-1 -format %Y-%m-%d] < 0} { error\ [format {%s %s} "$procname: specified month includes negative Unix time"\ "-- '$year-$month'"] } if {$month_norm == 2} { set secs_per_day 86400 lset days_per_month 1 [clock format\ [expr {[clock scan $year_norm-3-1 -format %Y-%m-%d] - $secs_per_day}]\ -format %d] } return [lindex $days_per_month [expr {$month_norm - 1}]] }