Fun with Dates

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fun with Dates

Bert Freudenberg-3
Here's a fun little snippet of code to let you plan unusual birthday  
parties. Just insert a list of dates and get a list of parties, like  
celebrating the 2222nd week of birth ;-)

| start end parties birthday birth number party |
start := (Date today subtractDays: 14) asSeconds.
end := (Date today addDays: 365*5) asSeconds.
parties := SortedCollection new.
#('1/3/1995' '7/30/1999') do: [:each |
        birthday := Date fromString: each.
        birth := birthday asSeconds.
        1 to: 9 do: [:digit |
                {false. true} do: [:repeatDigit |
                        number := digit.
                        12 timesRepeat: [
                                #(1 60 3600 86400 604800) with:
                                #('seconds' 'minutes' 'hours' 'days' 'weeks') do:
                                        [:unit :units |
                                                party := birth + (number * unit).
                                                (party between: start and: end) ifTrue: [
                                                        parties add: (Date fromSeconds: party) ->
                                                                (number asString, ' ', units, ' since ', birthday asString)]].
                                number := number * 10.
                                repeatDigit ifTrue: [number := number + digit]]]]].
Transcript clear.
parties do: [:each | Transcript show: each asString; cr].

- Bert -