回答編集履歴
2
タイムゾーンの変換処理を変更
answer
CHANGED
@@ -15,22 +15,20 @@
|
|
15
15
|
// NTPサーバへのリクエスト送信
|
16
16
|
var sendData = new Byte[48];
|
17
17
|
sendData[0] = 0xB;
|
18
|
-
udp.Send(
|
18
|
+
udp.Send(sendData, 48, "time.windows.com", 123);
|
19
19
|
|
20
20
|
// NTPサーバから日時データ受信
|
21
|
-
var
|
21
|
+
var receiveData = udp.Receive(ref ip);
|
22
22
|
|
23
23
|
// 1900年1月1日からの経過秒数計算
|
24
24
|
var totalSeconds = (long)(
|
25
|
-
|
25
|
+
receiveData[40] * Math.Pow(2, (8 * 3)) +
|
26
|
-
|
26
|
+
receiveData[41] * Math.Pow(2, (8 * 2)) +
|
27
|
-
|
27
|
+
receiveData[42] * Math.Pow(2, (8 * 1)) +
|
28
|
-
|
28
|
+
receiveData[43]);
|
29
29
|
|
30
|
-
var
|
30
|
+
var utcTime = new DateTime(1900, 1, 1).AddSeconds(totalSeconds);
|
31
31
|
|
32
|
-
//
|
32
|
+
// 協定世界時 (UTC) からローカルタイムゾーンへの変更
|
33
|
-
|
33
|
+
var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local);
|
34
|
-
|
35
|
-
now.Dump();
|
36
34
|
```
|
1
ソースの参照先URLを追記しました。
answer
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
クラサバ構成でRMSDBがあるなら、SQL等で現在時刻を取得するのもよくやりますね。
|
5
5
|
|
6
6
|
NTPサービスへ現在時刻を問い合わせるには以下のようにすればいいです。
|
7
|
+
※ソースは[こちら](http://nonsoft.la.coocan.jp/SoftSample/CS.NET/SampleNtpDateTime.html)から必要な部分のみ抜き出して改変しました。
|
7
8
|
NTPサービスは他に変更した方がいいかもしれません。
|
8
9
|
|
9
10
|
```C#
|