我目前正在为具有数据记录功能的Windows Phone 7制作小型计时器应用程序,以便人们可以看到他们在某一天执行任务所花费的时间。
他们需要能够关闭应用程序,接听电话等等,应用程序似乎会继续计数(因为WP7中没有针对第三方的多任务处理)。我目前正在通过存储计时器上次更新的时间并计算现在的时间之间的差异来做到这一点。
现在我有以下代码在定时器更新时执行(每秒/关于应用程序激活):
TimeSpan tempNowLastDiff = DateTime.Now - LastUpdateTime;
CumulativeTime += tempNowStartDiff;
LastUpdateTime = DateTime.Now;
问题是如果此人退出应用程序并更改时钟,则当应用程序再次启动时,累积时间不再准确。如果我改回时钟,可能会导致TimeSpan为负,如果我向前改变时钟,可能会导致TimeSpan过于正确。
我能想到的唯一解决方案是,如果tempNowStartDiff为负,则为差异,并假设每天24小时的任务是正面的(如果他们继续公路旅行,这是可能的)。 / p>
有没有办法获得不受电话时间变化影响的绝对时间? 如果没有,有没有办法检查时间是否改变了多少?
编辑:我上传了一份计时器代码here,其中包含有关如何复制问题的说明。
答案 0 :(得分:1)
我会使用DateTime.UtcNow来获得绝对值,因为DateTime.Now是相对于当前时区的,因此如果他们更改timezome(来自GSM网络),手机可以自动更改时间。
答案 1 :(得分:0)
在这种情况下,我能想到的唯一解决方案是从外面的某个地方获取时间,例如timeanddate.com