0

PCの時間に基づかない時間を取得するにはどうすればよいですか?以下のコードを使用して時間を取得しますが、コンピューターの時刻を変更すると時刻が正しくなくなります。PCの時刻からではなく、実際のリアルタイムを取得する方法はありますか?多分GPS時間?

    private void btn_DateTime_Click(object sender, EventArgs e)
    {
        DateTime dateTime = DateTime.Now;
        label_localTime.Text = dateTime.ToString();
        DateTime utcNow = DateTime.UtcNow;
        label_utc.Text = utcNow.ToString();


        TimeZone timeZone = TimeZone.CurrentTimeZone;
        if (timeZone.IsDaylightSavingTime(dateTime) == true)
        {
            label_dayLightSaving.Text = "YES";
            label_timeZone.Text = timeZone.GetUtcOffset(dateTime).ToString();
        }
        else
        {
            label_dayLightSaving.Text = "NO";
            label_timeZone.Text = "N//A";
        }                                  
    }

編集:ターゲットデバイスはWM6で実行されており、GPSハードウェアを備えています。

ありがとう。

4

5 に答える 5

7

ネットワークタイムサーバーを探しているようです。他の方法をサポートするローカル ハードウェア (GPS 受信機、原子時ラジオ) を持っていない限り、ネットワーク時間が最善の策です。

ネットワーク タイム プロトコル (NTP) は、パケット交換の可変遅延データ ネットワークを介してコンピューター システムのクロックを同期するためのプロトコルです。

C# を使用したクライアントの実装を次に示します。それは役立つかもしれません。

于 2009-07-09T17:12:25.320 に答える
1

使用することはできますntpが、プログラムを実行しているコンピューター上にないタイムソースにアクセスするには時間がかかり、特定の期間にTier1またはTier2サーバーに何度もアクセスすることはおそらく嫌われます。

于 2009-07-09T17:10:02.953 に答える
0

DateTimeはCPUクロックとコンピューターの内部クロックに基づいているため、CPUまたはコンピューターの時間に基づいていないDateTimeを取得する方法はありません。

最善の方法は、たとえば海軍の親時計を提供するWebサービスを見つけることです。

Webサービスがあるかどうかはわかりませんが、サイトから入手できます。

于 2009-07-09T17:08:55.387 に答える
0

GPS シリアル ストリームにアクセスできる場合、センテンスの 1 つに GMT/UTC 時刻が含まれています。

更新: $GPRMC 文がその 1 つです。 http://www.codepedia.com/1/The+GPRMC+文

$GPRMC,UTC,POS_STAT,LAT,LAT_REF,LON,LON_REF,SPD,HDG,DATE,MAG_VAR,MAG_REF*CS

于 2009-07-09T22:54:43.740 に答える
0

修正されていない CPU 時間を取得するための Win32 API もありますが、これは自分でローカライズする必要があります。

Win32 プラットフォームで実行されている埋め込み GPS システムがある場合、実行中に GPS 時刻を取得し、ローカル PC 時刻を修正します。そのため、ログにはローカルの Windows 時間を使用しますが、タイマーには正しくない CPU 時間を使用して、システム時間が変更されたときにタイマーが短くなったり長くなったりしないようにします。

于 2009-07-09T22:36:44.620 に答える