程序有问题怎么办?最直接、简单的方法是看源代码。我在之前贴了这篇《打卡程序问题求解》,却无人愿意施以援手。只好自己看了。
先看看打卡的好处,每天奖励分数为 1+ 2n,其中n为连续打卡天数,那么连续打卡N天会得多少金币呢?
金币数=[ix]\sum_{n=1}^N (1+2n) = (2+N)N[/ix]
如果连续打卡365天,那么金币数= (2+365)*365= 133955。哇!我得写多少博文啊?
程序到底有什么问题?
我认为是因为它在两处用了不同时区的时间。
1)在记录打卡时间是用的是北京时间;
2)在计算当前日期时却用的是服务器的上设置的时区时间,这是美国太平洋时间。
程序工作机制是先看上次记录,判断今天是否已经打卡,如果已经打卡就不进行了。因为用的是北京时间记载,却用美国西部时间进行判断,问题就出来了。
要顺利打卡,必须选择北京与旧金山是同一个日期的时间段。比如说现在是旧金山时间12月18日下午两点,而北京时间是19日早上6点,这就不行。两地时间差为30-14=16小时。因此,只有在北京时间下午四点到11:59打卡才行。纽约的同学要在晚上9点以后打卡,换成旧金山时间那是零点了。
这个我没有去实验,大家看对不对。
怎么修改呢? 我看在某个地方把时间差加上即可。但我怕这样一来,某些连续打卡的同学又被中断重来了。所以得想清楚先。