1+ func dow( year: Int , month: Int , day: Int ) -> Int {
2+ var year = year
3+ let t = [ 0 , 3 , 2 , 5 , 0 , 3 , 5 , 1 , 4 , 6 , 2 , 4 ]
4+ year -= month < 3 ? 1 : 0
5+ return ( year + year / 4 - year / 100 + year / 400 + t[ month - 1 ] + day) % 7
6+ }
7+
8+ func dowS( year: Int , month: Int , day: Int ) -> String {
9+ switch ( dow ( year: year, month: month, day: day) ) {
10+ case 0 : return " Sunday "
11+ case 1 : return " Monday "
12+ case 2 : return " Tuesday "
13+ case 3 : return " Wednesday "
14+ case 4 : return " Thursday "
15+ case 5 : return " Friday "
16+ case 6 : return " Saturday "
17+ default : return " Invalid ordinal "
18+ }
19+ }
20+
21+ print ( " \( dow ( year: 1886 , month: 5 , day: 1 ) ) : \( dowS ( year: 1886 , month: 5 , day: 1 ) ) " )
22+ print ( " \( dow ( year: 1948 , month: 12 , day: 10 ) ) : \( dowS ( year: 1948 , month: 12 , day: 10 ) ) " )
23+ print ( " \( dow ( year: 2001 , month: 1 , day: 15 ) ) : \( dowS ( year: 2001 , month: 1 , day: 15 ) ) " )
24+ print ( " \( dow ( year: 2017 , month: 10 , day: 10 ) ) : \( dowS ( year: 2017 , month: 10 , day: 10 ) ) " )
25+ print ( " \( dow ( year: 2018 , month: 1 , day: 1 ) ) : \( dowS ( year: 2018 , month: 1 , day: 1 ) ) " )
26+ print ( " \( dow ( year: 2018 , month: 2 , day: 16 ) ) : \( dowS ( year: 2018 , month: 2 , day: 16 ) ) " )
27+ print ( " \( dow ( year: 2018 , month: 5 , day: 17 ) ) : \( dowS ( year: 2018 , month: 5 , day: 17 ) ) " )
0 commit comments