今天看到个关于日历的程序,是区别于dateformatter的另一种写法,但是很多人可能找不到,发出来新手共享。
主要就是星期的计算,说一下主要的原理,copy之。
星期计算公式
(年+年/4+年/400-年/100-年基数+月基数+日)/7=……余星期几
注:式中分数均取整
年基数,平年1,闰年2,
月基数,1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4,
七月6, 八月2, 九月5, 十月0, 十一月3, 十二月5.
2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5,
七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6.
如:1949年10月1日是星期几?
(1949+1949/4+1949/400-1949/100-1+0+1)/7
=(1949+487+4-19-1+0+1)/7
=345……6
即该日为星期六。
原帖的参数测试了下有些错误,现验证 2012,2013,2014无问题。
将代码也传一下吧。
[attachment=48631]
主要就是星期的计算,说一下主要的原理,copy之。
星期计算公式
(年+年/4+年/400-年/100-年基数+月基数+日)/7=……余星期几
注:式中分数均取整
年基数,平年1,闰年2,
月基数,1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4,
七月6, 八月2, 九月5, 十月0, 十一月3, 十二月5.
2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5,
七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6.
如:1949年10月1日是星期几?
(1949+1949/4+1949/400-1949/100-1+0+1)/7
=(1949+487+4-19-1+0+1)/7
=345……6
即该日为星期六。
原帖的参数测试了下有些错误,现验证 2012,2013,2014无问题。
将代码也传一下吧。
[attachment=48631]
效果图: