2011-02-06 3 views
2

私は現在、データロギング機能を備えたWindows Phone 7用の小さなタイマーアプリケーションを作成しています。そのため、ユーザーは特定の日にタスクを実行した時間を知ることができます。電話機の時計を変更した場合でも、Windows Phone 7の差分DateTimesを正確に計算することはできますか?

アプリケーションを終了したり、電話に応答したりする必要があります。アプリケーションはカウントを続けるように見えます(サードパーティのWP7ではマルチタスキングがないため)。私は現在、タイマーが最後に更新された時刻を保存し、時刻の差を今計算しています。

は、今私が実行され、次のコードを持っている場合(アプリケーションのアクティベーション上の毎秒/)タイマーのアップデート:

TimeSpan tempNowLastDiff = DateTime.Now - LastUpdateTime; 
CumulativeTime += tempNowStartDiff; 
LastUpdateTime = DateTime.Now; 

人は、ときにアプリケーションを終了し、クロックを変更した場合に問題がありますアプリケーションが再び起動すると、CumulativeTimeは正確でなくなります。クロックを戻すと、TimeSpanが負の値になります。クロックを前方に変更すると、TimeSpanが非常に肯定的になる可能性があります。

私が考えることができる唯一の解決策は、tempNowStartDiffが負の場合には差を0にし、正の場合はタスクが毎日24時間行われると仮定することです(これはロードトリップになる可能性があります)。

電話時間の変更の影響を受けない絶対時間を取得する方法はありますか? そうでない場合は、時間が変更されたかどうかを確認する方法はありますか?

編集:タイマーコードhereのコピーをアップロードして問題を複製する方法を説明しました。

+0

私はこれを行うことのポイントを取得しません。それが測定するのは、アプリが実行されていない時間です。それは完全に乱数です。実行している時間を測定する場合は、有効にするとすぐにLastUpdateTimeをDateTime.Nowに初期化します。 –

+0

アプリが実行されていないときに測定を続ける理由は、人々が電話に応答したり、他のアプリケーションを使用したりすることができるからです。あなたが何かを料理するのにかかる時間を見たいかもしれませんが、料理レシピアプリケーション同時に。 – Jacobite

答えて

0

その場合、私は考えることができる唯一のソリューションは、timeanddate.comから

1

のようにどこか外から時刻を取得することですDateTime.Nowがに相対的であるので、私は絶対値を持つようにDateTime.UtcNowを使用します現在のタイムゾーンであるため、(GSMネットワークから)timezomeが変更された場合、電話機は自動的に時刻を変更できます。

+0

こんにちは、私はまだ電話の時間を変更することは同じことをやってみました。私はそれを遠くまで後ろ向きに前向きに進めていく。 – Jacobite

+0

ユーザーが外部Webサービスから手動でタイムゾーンを変更した場合、私は多くの解決策を見ません。 – MatthieuGD

関連する問題